基准测试Linq2SQL,亚音速2,亚音速3 - 任何其他想法让它们更快?

时间:2010-03-02 14:23:58

标签: linq-to-sql subsonic subsonic3 benchmarking performance

5 个答案:

答案 0 :(得分:3)

Aristos,这是我遇到的问题。您向我们的小组发布了一个问题,我们有一个很好的,23长的电子邮件交换。您坚持认为 SubSonic 3存在问题,您问我为什么没有修复这个“缓慢,破损的工具”。

我试着向你解释说,有了233张桌子,SubSonic必须在加载时读取每个EACH ONE的架构。这不是SubSonic 3的典型用法,但我们这样做是因为它在后续加载时实际上比SubSonic 2更快。

你正在这样做。我在回答你。 RBarry在上面留下了一条评论,说我正在“诋毁”。我很沮丧。你似乎认为我没有对这个事情进行基准测试,我有很多次。我不能将ORM与您建议的问题相提并论,而我没有。

您必须明白,如果SubSonic需要10秒钟才能运行查询,那么就不会使用它。

所以 - 你的回答:233个表,作为类编写,需要在第一次运行时加载到Provider内存。

那太多了。 SubSonic不是你的工具。

答案 1 :(得分:1)

我认为要在这些上获得更好的Benchmark,你应该检查sql profiler中的时间而不是google chrome,因为在浏览器中可能会有很多因素影响页面加载的速度。

答案 2 :(得分:1)

您的速度测试是一个网页,对我来说,看起来像测试加载需要多长时间。 SubSonic并不那么慢,在网页上测试加载时间是相当荒谬的。

如果您想真正对某些内容进行基准测试,您需要使用控制台并运行对索引数据起作用的读取循环。你所做的就是创建一个网页并说“让我们看看加载时会发生什么”。

由于多种原因,这是有缺陷的。首先 - 所有编写的代码都需要从IL do ML编译。因为SubSonic会为您生成代码,并且因为我知道您在这里有很多表(如果我没记错的话,还有300多个表),您可以想象在第一次加载时会有一些工作正在进行中。

在这里说实话 - 你缺乏经验就是通过张贴诸如“它很慢但没有准备好”之类的东西来取消我免费提供的大量工作。我不在乎人们是否使用SubSonic - 当人们做愚蠢的事情(比如基准测试网站测试)时我会关心并且责备我。

答案 3 :(得分:1)

根据您的示例,您可以使用以下代码来提高性能:

 StringBuilder Test = new StringBuilder();
 int[] MiaSeira = { 5, 6, 10, 100, 7 };
 for (int i = 0; i < 100; i++)
 {
     foreach (int EnaID in MiaSeira)
     {
         var Products = (from product in Product.
             where MiaSeira.Contains(product.ProductID)
             select product).ToList();

         if (Products == null || Products.Count == 0)
             continue;

         foreach (Product product in Products)
         {
            Test.Append("<br />");
            Test.Append(product.ProductName);
         }
     }
 }

 txtDebug.Text = Test.ToString();

答案 4 :(得分:0)

我没有使用亚音速的第一手经验,但如果它正在进行大量代码生成,您可能希望为第一个请求(冷)发布单独的结果,以及后续请求的平均结果(温暖)。您还应该使用秒表计时数据提取部分,这样您就不会将其他时间与数据混为一谈。