发布 SunSpider 0.9.1
今天,我们宣布推出 SunSpider 0.9.1,这是备受欢迎的 SunSpider JavaScript 基准测试的新版本,它提高了结果的准确性。我们建议所有使用 SunSpider 测试 JavaScript 性能的用户都迁移到新版本。
两年多前,我们宣布推出 SunSpider JavaScript 基准测试。我们最初创建 SunSpider 是为了我们自己使用,以帮助我们加速 WebKit 的 JavaScript 实现。从那时起,SunSpider 已成为广受认可的 JavaScript 性能指标,并经常在性能比较中被引用。但是,我们收到了一些关于 SunSpider 的建议,可以使其在快速系统和跨浏览器比较中更加准确。
我们一直不愿过多更改 SunSpider 的内容或测试框架,因为它已被用于跨版本和跨浏览器比较很长时间了。但解决最重要的问题似乎很重要。考虑到这一点,我们对测试框架和测试内容本身进行了一些有限的更改。
处理电源管理
在过去的两年里,计算机和 JavaScript 实现的速度都快了很多。如果你查看原始 SunSpider 公告的评论,你会发现大多数人报告的结果大约在 10,000 毫秒左右。现在,高性能 JavaScript 引擎在快速硬件上获得大约 300 毫秒的得分是很常见的。
伴随这一速度提升,我们遇到了测试框架的一个意想不到的问题。根据设计,SunSpider 框架在每次测试之间有显著的暂停,以便让浏览器在加载后有机会稳定下来。但是,在现代硬件上使用快速浏览器时,这会给电源管理系统足够的时间介入并降低 CPU 时钟频率。结果,大多数基准测试没有以全速运行。这个问题,最初由 Chrome 团队的 Mike Belshe 报告,对更快的 JavaScript 引擎影响更大。
这导致了我们的第一个 SunSpider 框架错误修复:bug 32505:浏览器内 SunSpider 在电源管理下遭受过多惩罚。除了降低测试之间的延迟,我们还大大减少了基准测试期间发生的加载量。所有内容都在一个页面中。这进一步减少了测试运行之间的差异性。此外,作为额外的好处,SunSpider 测试套件现在完成速度快得多,因为它不再在每次测试之间等待半秒钟。
测试内容错误修复
SunSpider 的测试内容有一些怪异之处。在报告的各种问题中,有两个问题在一定程度上影响了测试的准确性。首先,string-base64
测试存在一个导致其在 Internet Explorer 中不正确的错误。该测试已更新,现在在 IE 中应该能给出更准确的结果。其次,regexp-dna
测试存在一个 Gecko-based 浏览器(如 Firefox)特有的问题。它也已更新,现在在 Firefox 中应该更准确。
版本化测试内容
由于我们更改了测试内容,我们认为有些人可能对在新框架下运行“经典”SunSpider 0.9 内容集感兴趣。我们也希望能够普遍处理多个版本的测试内容,所以我们这样做了。在此版本中,我们使sunspider-0.9.1 成为默认内容集(包括命令行和托管版本)。
测试框架微调
在实施这些修复的过程中,我们决定进行一些清理。首先,我们确保浏览器托管版本中的所有 HTML 文件都是有效的 HTML5。随着 HTML5 的发展和普及,这似乎是正确的做法。该测试在旧版浏览器中仍能正常工作。此外,较旧的 SunSpider 框架使用了一些临时技术处理 JSON 字符串。我们更新为使用 json2.js 或浏览器原生的 JSON.parse(如果可用)。
尝试一下
最后但同样重要的是,尝试一下,报告您的分数、遇到的任何问题或任何其他有趣的评论。您可以直接从该页面运行最新内容集,或者如果您想测试旧内容集,请访问所有版本页面。