公告:服务器迁移已顺利完成! 网址全面启用 https

服务器2号 服务器3号 服务器5号

申请VIP无广告,支付宝,微信,USDT!
在线客服请尝试以下不同链接如果进不了的话在线客服(1) (2) (3) (4) (5) (6)
(7) (8) (9) 实时开通

查看完整版本: 四大浏览器内存占用精确测试 Firefox大胜

stormluna 2009-6-23 01:06

四大浏览器内存占用精确测试 Firefox大胜

昨天我们对Chrome、Firefox、IE、Opera、Safari五款流行浏览器的[url=http://news.mydrivers.com/1/137/137621.htm][color=#0000ff]速度进行了全面对比测试[/color][/url],今天我们再来看看另一个非常实际的问题:内存占用。
本次测试的主角是[b]Google Chrome 3.0开发版[/b]、[b]Mozilla Firefox 3.5 Beta 4测试版[/b]、[b]Safari 4.0正式版[/b]、[b]Opera 10.00 Beta测试版[/b],而IE8因为测试方法的原因没有加入。测试环境是[b]Windows Vista Home Premium 32-bit操作系统[/b]、[b]4GB内存[/b]、Visual Studio、.NET Framework 3.5 SP1等。
平常衡量应用程序内存占用率都是查看任务管理器,不过那样显然太不精确,为此dotnetperls.com用C#自行编写了一个小程序,在命令行下模拟浏览[url=http://s3.amazonaws.com/alexa-static/top-1m.csv.zip][color=#0000ff]Alexa排名世界前五百位的各大网站[/color][/url](截至2009年6月19日)。
在测试过程中,每个浏览器都根据命令行通过新标签打开新网站,且之前的标签保持可访问状态,直到打开三十个网站后再关闭所有标签页,只保留一个空白的,接下来重复以上过程。这样能基本模拟大部分用户的实际体验。由于IE8总是每次都打开新窗口而非新标签,一时找不到解决方法,所以没有参加测试。
自行编写的内存占用查看工具会每隔三秒钟记录一次实时结果。像Google Chrome这种每个标签页一个进程的,则统计所有同名进程的总内存占用量。测试总耗时1152秒(19.2分钟),共有384个记录点。
测试结果如下——
[b]峰值内存占用:[/b]
[b]Chrome:1216.16MB (最大)
Firefox:327.65MB (最小)
Opera:554.11MB
Safari:517.00MB[/b]
[b]平均内存占用:[/b]
[b]Chrome:543.83MB (最大)
Firefox:166.82MB (最小)
Opera:347.45MB
Safari:319.44MB[/b]
[b]最终内存占用:[/b]
[b]Chrome:109.49MB
Firefox:106.66MB (最小)
Opera:441.49MB (最大)
Safari:349.62MB[/b]
测试总结:

尽管Firefox在1.0/2.0时代的内存管理做得不算好,但3.5最新测试版却是各浏览器中最出色的,峰值、平均和最终结果都是最低的,内存管理和释放效率都相当高,是本次测试当之无愧的胜者。

Chrome因为运行机制(每个标签对应一个进程)的原因比较特殊,打开大量标签后内存占用量急剧飙升,最高超过1.2GB,是Firefox的将近四倍、Opera和Safari的两倍左右,不过内存释放效率也很不错,所占内存在关闭标签后几乎全部释放,和Firefox差不多,测试完成后都只占100MB多点。

Safari和Opera的表现差不多,而前者稍好一些,特别是在测试后期内存占用量更低一些。测试结束后Safari还占着350MB内存,而Opera高达440MB,是所有参测浏览器中最高的,可能是还处于早期测试阶段的原因。


--------------------------------------------------------------------------------

附测试程序源代码:

~~~ Console program that uses Process.Start (C#) ~~~

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;

class Program
{
    /// <summary>
    /// Number of points to close stuff.
    /// </summary>
    const int _interrupt = 30;

    /// <summary>
    /// Browsers urls are sent to.
    /// </summary>
    static string[] _browsers =
    {
        @"C:\Program Files\Mozilla Firefox 3.5 Beta 4\firefox.exe",
        @"C:\Program Files\Safari\Safari.exe",
        //@"C:\Program Files\Internet Explorer\iexplore.exe",
        @"C:\Program Files\Opera 10 Preview\opera.exe",
        @"C:\Users\Sam\AppData\Local\Google\Chrome\Application\chrome.exe"
    };

    static void Main()
    {
        var r = new Random();
        var ct = 1;
        foreach (var url in GetUrls())
        {
            if ((ct % 30) == 0) // Notify
            {
                Console.BackgroundColor = ConsoleColor.DarkRed;
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("Close all tabs but one in all browsers then press enter.");
                Console.ResetColor();
                Console.ReadLine();
            }
            foreach (var b in _browsers) // Loop through browsers
            {
                try
                {
                    var info = new ProcessStartInfo(b, url);
                    Process.Start(info); // Start url in this browser
                    Thread.Sleep(r.Next(100, 1000)); // Sleep 100 ms - 1 s
                }
                catch
                {
                }
            }
            Thread.Sleep(r.Next(2000, 5000)); // Sleep 2 - 5 seconds.
            ct++;
        }
    }

    /// <summary>
    /// Get list of top 2000 urls.
    /// </summary>
    static IEnumerable<string> GetUrls()
    {
        return File.ReadAllLines("top.txt").Where(item => item != null &&
            item.Length > 1 &&
            item[0] != '#').Select(item => "http://" + item);
    }
}

[[i] 本帖最后由 stormluna 于 2009-6-23 01:07 编辑 [/i]]

ltoucyber 2009-6-23 10:07

*** 作者被禁止或删除 内容自动屏蔽 ***
页: [1]
查看完整版本: 四大浏览器内存占用精确测试 Firefox大胜