这是我今晚设置的一个测试。它是为了证明一些不同的东西,但结果并不像我预期的那样。
我正在对 IQueryable 进行 10000 个随机查询的测试,在测试时我发现如果我在 List 上做同样的事情,我的测试速度会快 20 倍。
见下文。我的 CarBrandManager.GetList 最初返回一个 IQueryable,但现在我首先发出一个 ToList(),然后速度更快。
谁能告诉我为什么我看到了这么大的不同?
var sw = new Stopwatch();
sw.Start();
int queries = 10000;
//IQueryable<Model.CarBrand> carBrands = CarBrandManager.GetList(context);
List<Model.CarBrand> carBrands = CarBrandManager.GetList(context).ToList();
Random random = new Random();
int randomChar = 65;
for (int i = 0; i < queries; i++)
{
randomChar = random.Next(65, 90);
Model.CarBrand carBrand = carBrands.Where(x => x.Name.StartsWith(((char)randomChar).ToString())).FirstOrDefault();
}
sw.Stop();
lblStopWatch.Text = String.Format("Queries: {0} Elapsed ticks: {1}", queries, sw.ElapsedTicks);