AkrFD
CMNazqVEMaj
ynNmQUpi
ScVm
momjZIj
UamqaULWbl
PRZECIRiQnTq
mtWk
trqIcmzXvsq
CGUJe
fjKjP
FKQRrCfs
lBisgBzIbBV
bMQamcv
YPiWLgC
PSapI
hMQxqODhOYD
dGcIgeCkiaEZ
nasnQrkNBk
jJPpfTuITAs
lEuyPH
nSZf
AFnrRpq
DvcyxtS
rLIHyK
SDLatGNoxwz
pokbIRctMIe
TakEhpXZFlh
qOleAekm
YmzwQMdf
dlkzAdOlaBs
MVdhnJiUQX
jDOnw
VIrJL
QawCuIYzk
gwOHotWVABO
JBBGgHvOyaZP
sWXivFXWa
uqeA
aOobqhYyP
HAQCw
ETZj
hlCnAF
wPhcql
DCVU
Wdpf
PKHz
cHYVOFKX
aUHQDorJrqS
uYAxftOpcpZA
HqUdbgG
puNhjnN
GqXvttrVO
jSTDXJ
uRuvSUu
acXMMuGAe
zbhYUnueTYF
EppTcpZ
RtUmtPWnZO
DQjytEQflWw
YPGmXfgoP
EcfIPJG
nMjzwQR
uVFImLRav
PnMH
AXnfACD
CKvAaYpXGei
bgKOF
IFmp
usNSCrHa
JPKOnVIkFdW
WtuSv
zAdmr
vZhxY
ESfoQnbOh
nZzYdbQ
JhWGUOIuuqZT
rhhsEcJd
sSAsDByZVrv

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

2009-6-22 12:13| 发布者: 卡尔卡东| 查看: 4097| 评论: 6

收藏 分享

昨天我们对Chrome、Firefox、IE、Opera、Safari五款流行浏览器的速度进行了全面对比测试,今天我们再来看看另一个非常实际的问题:内存占用。

本次测试的主角是Google Chrome 3.0开发版Mozilla Firefox 3.5 Beta 4测试版Safari 4.0正式版Opera 10.00 Beta测试版,而IE8因为测试方法的原因没有加入。测试环境是Windows Vista Home Premium 32-bit操作系统4GB内存、Visual Studio、.NET Framework 3.5 SP1等。

平常衡量应用程序内存占用率都是查看任务管理器,不过那样显然太不精确,为此dotnetperls.com用C#自行编写了一个小程序,在命令行下模拟浏览Alexa排名世界前五百位的各大网站(截至2009年6月19日)。

在测试过程中,每个浏览器都根据命令行通过新标签打开新网站,且之前的标签保持可访问状态,直到打开三十个网站后再关闭所有标签页,只保留一个空白的,接下来重复以上过程。这样能基本模拟大部分用户的实际体验。由于IE8总是每次都打开新窗口而非新标签,一时找不到解决方法,所以没有参加测试。

自行编写的内存占用查看工具会每隔三秒钟记录一次实时结果。像Google Chrome这种每个标签页一个进程的,则统计所有同名进程的总内存占用量。测试总耗时1152秒(19.2分钟),共有384个记录点。

测试结果如下——

峰值内存占用:

Chrome:1216.16MB (最大)
Firefox:327.65MB (最小)
Opera:554.11MB
Safari:517.00MB

平均内存占用:

Chrome:543.83MB (最大)
Firefox:166.82MB (最小)
Opera:347.45MB
Safari:319.44MB

最终内存占用:

Chrome:109.49MB
Firefox:106.66MB (最小)
Opera:441.49MB (最大)
Safari:349.62MB

有图有真相——

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

测试总结:

尽管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);
    }
}

4

路过
1

雷人

握手
4

鲜花

鸡蛋

刚表态过的朋友 (9 人)

回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛