【问题标题】:Testing the rendering speed of IE on a specific page测试IE在特定页面的渲染速度
【发布时间】:2010-10-06 01:39:08
【问题描述】:

如果我的目标是通过重复加载测试特定网页在 IE 中的渲染速度(仅使用 javascript onload 事件进行计时并查看页面并不能削减它),那么有什么好方法呢是吗?

我目前的尝试是在 VB 和 C# 中使用 IE WebBrowser 对象,但我愿意接受其他建议。

下面是一些简单的 VB 代码,虽然我在 C# 中尝试过类似的东西。我还尝试为每个测试创建一个新的 Web 浏览器控件(这让事情变得更糟)。我也尝试过使用事件本身而不是使用 readystate 循环。在所有情况下,测试的运行时间都越来越长,尽管使用 reload 完全插入 navigate2 似乎有点帮助,也许暗示问题是某种历史问题。

For cnt = 1 To 100
    timer = GetTickCount()
    Form1.WebBrowser1.Navigate2 "http://www.example.com"
    While Form1.WebBrowser1.ReadyState <> READYSTATE_COMPLETE And GetTickCount() - timer < 5000
        Sleep 50
        DoEvents
    Wend
    Debug.Print GetTickCount() - timer
Next

【问题讨论】:

    标签: internet-explorer language-agnostic com rendering


    【解决方案1】:

    我认为更好的方法是处理 Webbrowser 控件公开的 OnBeforeNavigate 和 OnDocumentComplete 事件。在 OnBeforeNavigate 中设置一个计时器并在 OnDocumentComplete 中停止它。

    现在你正忙着等待,这绝不是一个好主意。

    【讨论】:

    • 正如我的帖子中提到的,我已经尝试过了,但没有帮助。我发布这个特定示例是因为它是重现问题的最简单方法,而不是因为它是最好的。
    • 其实我首先尝试的是基于事件的方法。这是后来解决问题的尝试。我希望增加的简单性会降低复杂性,从而消除问题或至少查明问题。
    【解决方案2】:

    我不确定您可以在控件上挂接哪些事件来开始和结束,但这是我在单元测试中使用的代码,用于计算我的引擎处理我提供的数据所花费的时间。

    Stopwatch stopWatch = new Stopwatch();
    
    stopWatch.Start();
    //perform work
    stopWatch.Stop();
    
    TimeSpan ts = stopWatch.Elapsed;
    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
                                               ts.Hours,
                                               ts.Minutes,
                                               ts.Seconds,
                                               ts.Milliseconds/10);
    Console.Write(elapsedTime);
    

    干杯!

    【讨论】:

      猜你喜欢
      • 2012-06-06
      • 1970-01-01
      • 2012-06-30
      • 2014-10-08
      • 2011-07-06
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多