最近你可能看到一些关于谷歌计划停止使用Octane JavaScript基准测试套件的新闻标题。如果你不知道这件事,或者没有看完标题,让我简要回顾一下。谷歌推出Octane是为了取代行业标准的SunSpider基准测试。SunSpider是由苹果的Safari团队创建的,是首批JavaScript基准测试之一。
SunSpider有两个问题。首先,它基于微基准测试(想想成千上万次测试创建新数组),这并不能非常准确地反映现实世界的使用情况。其次,SunSpider的排名在浏览器制造商中占据了很大的权重,导致一些厂商优化他们的JavaScript引擎以获得更好的基准测试分数,而不是满足实际程序的需求。在某些情况下,这些调整甚至导致生产代码运行速度比以前更慢!
Octane专注于尝试创建更准确地模拟实际工作负载的测试,并成为衡量JavaScript实现的标准。然而,浏览器制造商再次迎头赶上,我们看到针对Octane测试的优化。这并不是说基准测试没有用。浏览器之间的竞争确实导致了JavaScript性能的全面大幅提升。
你可能会说,这有点意思,但这与我作为开发人员的日常工作有什么关系呢?在试图让人们相信框架Y优于框架X的好处时,经常会引用基准测试,有些人非常重视这些数字。上周,我注意到一个名为MoonJS的新UI库在一些新闻聚合器上广为流传。MoonJS将自己定位为一个“最小化、极速”的库,并引用一些基准测试数据来支持这一说法。
需要明确的是,我这里并不是针对MoonJS。这种对速度的关注非常普遍,尤其是在UI库中(例如,看看任何React克隆)。然而,正如我们在SunSpider和Octane的例子中看到的那样,基准测试可能会产生误导。许多现代JavaScript视图库和框架都使用某种形式的虚拟DOM来呈现输出。在研究不同的实现过程中,Boris Kaul花了一些时间研究衡量虚拟DOM性能的方法,并发现相对容易调整VDOM性能以在基准测试中取得好成绩。他的结论是:“当你选择框架或库时,不要使用任何Web框架基准测试中的数字来做决定。”
当根据库的声称速度进行比较时,还有其他原因需要谨慎。重要的是要记住,与SunSpider一样,许多基准测试都是微基准测试;它们是在你创建应用程序界面的过程中不太可能达到的规模上测量重复操作。
还值得考虑一下速度对你特定用例的重要性。构建一个简单的CRUD应用程序不太可能让任何UI库不堪重负,并且学习曲线、可用的人才库和开发人员的幸福感也是重要的考虑因素。过去我见过很多关于Ruby是否太慢而无法构建Web应用程序的讨论,但是,尽管存在更快的选择,但仍然有很多应用程序是用Ruby编写并继续用Ruby编写的。
速度指标可能会产生误导,但根据你构建的内容,它们也可能用途有限。与所有经验法则和良好实践一样,最好停下来思考它如何(或是否)适用于你的情况。我很想知道你的经验:你是否在实践中使用过没有达到其基准测试声明的软件?你是否构建过速度差异很重要的应用程序?请留言告诉我!
JavaScript基准测试是一个衡量特定代码片段或函数性能的过程。它帮助开发人员了解他们的代码效率如何,并找出需要改进的地方。通过比较不同代码片段的执行时间,开发人员可以选择最有效的解决方案来满足他们的需求。基准测试在JavaScript开发中至关重要,因为它直接影响用户体验,尤其是在Web应用程序的速度和响应能力方面。
SunSpider是一个流行的JavaScript基准测试工具,由WebKit开发。它对JavaScript引擎运行一系列测试,并测量完成每个测试所需的时间。这些测试涵盖了JavaScript的各个方面,包括控制流、字符串处理和数学计算。总时间越短,JavaScript引擎的性能越好。
虽然所有基准测试工具的目标都是衡量JavaScript性能,但它们在运行的测试类型和计算结果的方式上有所不同。SunSpider专注于现实世界的用例,并避免只测试单个功能的微基准测试。其他工具如jsben.ch和jsbench.me允许开发人员创建和运行他们自己的测试,提供了更大的灵活性。
基准测试结果通常提供时间测量,这表明特定操作完成需要多长时间。时间越短,性能越好。但是,解释这些结果需要理解上下文。例如,几毫秒的差异在用户界面中可能并不重要,但在高性能服务器应用程序中可能至关重要。
是的,基准测试是比较不同JavaScript引擎性能的常用方法。通过对不同的引擎运行相同的测试,您可以了解它们的相对性能。但是,请记住,现实世界的性能会受到许多因素的影响,基准测试结果只是拼图的一小部分。
像jsben.ch和jsbench.me这样的工具允许你编写和运行你自己的JavaScript基准测试。您可以使用这些工具来测试特定的代码片段或比较解决问题的不同方法。在创建基准测试时,重要的是使测试尽可能真实,并多次运行它以获得准确的测量结果。
虽然基准测试是一个强大的工具,但它也有其局限性。创建真实的测试可能很困难,结果可能会受到许多因素的影响,包括特定的硬件和软件环境。此外,过于关注基准测试结果可能会导致过度优化,开发人员花费太多时间改进对整体性能影响很小的代码。
基准测试是开发过程中的一个重要部分,因为它帮助开发人员识别性能瓶颈并验证他们的更改是否提高了性能。但是,它不应该是评估代码质量的唯一工具。可读性、可维护性和功能性等其他因素也很重要。
是的,基准测试可以帮助你识别导致应用程序变慢的代码区域。通过优化这些区域,您可以提高应用程序的整体性能。但是,请记住,性能只是高质量Web应用程序的一个方面。可用性、功能和设计也很重要。
基准测试的频率取决于项目的性质。对于性能关键型应用程序,您可能希望定期进行基准测试,即使是在进行小的更改之后。对于不太关键的应用程序,基准测试可以不那么频繁地进行,例如在重大更改之后或在新版本发布之前。
以上是社论:基准,还是不基准?的详细内容。更多信息请关注PHP中文网其他相关文章!