问题标签 [jsperf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
358 浏览

javascript - eval() 正在减慢其他代码,为什么?

在程序中的任何地方使用 eval 似乎会减慢其他代码,即使从未执行过。为什么是这样?

在下面的示例中有代码:

如果eval()两者都被注释掉simpleFor()并且使用 for 循环具有相当的性能。eval()本机循环何时会减速约 85%。我已经使用 jsperf 的 Chrome/Firefox 进行了测试,并使用了类似的脚本 nodejs。

示例位于:http: //jsperf.com/eval-wierdness

我最初的想法,以及我是如何发现这一点的,是创建一个函数来创建性能高效的映射函数,例如:

是否可以在不减慢其他代码速度的情况下使这样的功能高效?

0 投票
1 回答
508 浏览

javascript - 使用 HTML5 的 performance 和 performance.timing 对象测量 JS 性能

我正在根据 HTML5 提供的性能对象测量我的网站的性能,我想知道我的应用程序出了什么问题,我还想在我的本地数据库中记录其他最终用户的这些性能对象,以便我有信息从他们的角度来看,但我不太熟悉每个属性的含义,例如 connectStart、connectEnd 延迟的原因......我根据我的知识创建了一张地图,但我需要社区为此提供意见.. . 这对其他人也很有帮助

该过程的顺序显示在此图像中以供参考 性能时序概述

我还为此创建了一个JSFiddle

同样,我还想在我的网页中测量 AJAX 请求的性能,我正在考虑使用 AJAX 请求的 readyState 所以我想知道在每次状态更改之间花费时间的原因是什么

我想这样做的原因是,有时我们会抱怨我们的应用程序有点慢,所以在这种情况下,我们可以读取该用户的性能对象并读取整体性能对象。我们还可以在应用程序使用高峰期和其他时间读取各种性能对象,并希望测量应用程序的哪个部分需要更长的时间来加载。同时它是一个会随着时间发展的产品,所以为了将来的参考,我也可以使用这个数据作为基准。所以我唯一的重点是完全理解这个对象

另外,如果有其他方法,请告诉我(如果我要走很长的路)...

0 投票
1 回答
558 浏览

javascript - 为什么双重查找比 JavaScript 中的单一查找更快?

我在jsperf测试中看到一些奇怪的行为。这是设置:

然后我只需查找每个属性q.xq._xq.z.x

单次查找q.xq._x预期的原型查找要快。但是双重查找q.z.x是最快的。我预计q.z.x会是最慢的,尤其是与q.x.

q.z.x甚至比q.z. 这里发生了什么?

0 投票
1 回答
421 浏览

javascript - jsperf 测试 setInterval() 与 requestAnimationFrame()

有人可以解释为什么turnEvenOld(250, 250)(0.089ms)的运行速度比turnEvent(250, 250)(0.447ms)快得多吗?

我认为使用requestAnimationFrame()比运行更快更便宜setInterval()

设置间隔():

请求动画帧():

0 投票
1 回答
86 浏览

javascript - JSPerf 测试结果随着测试的运行而变慢?

背景:所以,我试图做一个测试,看看三种使用 jQuery 绑定“点击”事件的方法的性能差异on.()。我看到了一些相当大的差异(比我预期的要大),当一位同事运行结果时,他注意到,如果你改变测试运行的顺序,结果会改变,但同样“不正常”。


所以,我决定做一个非常简单的测试:

1) 一个<div>包含 100 个子元素<div>的父元素,每个子元素都只有一个内部数字 (1-100) 和class值“目标元素”。

2)每个元素都有一个click绑定到它的事件,使用这个:

3)click事件只是将文本值设置为局部变量:

4)然后,我设置了一个“触发”函数来调用所有孩子<div>的点击:

5)然后,我设置了 3 个测试运行,它们都调用了完全相同的测试:

运行 1 --->triggerClicks("#context1");

运行 2 --->triggerClicks("#context1");

运行 3 --->triggerClicks("#context1");

你可以在这里看到测试:http: //jsperf.com/jsperf-perf-test

在我测试的所有浏览器中,结果都大不相同,随着运行的继续,速度越来越慢:

铬 41

火狐 36

即 9


那么我在这里错过了什么?我意识到这是一个重复性测试,并且正在处理很多元素,但这不应该对运行结果产生太大影响。任何人都可以看到为什么会由于我的代码而不是 JSPerf 出现严重问题而发生这种情况的任何原因吗?

0 投票
3 回答
112 浏览

javascript - 为什么按大小更快地迭代数组

在第一个示例中,我创建了长度为 1000 的空数组:

在第二个示例中创建了长度为 0 的空数组:

在 OS X 10.10.3 上的 Chrome 41.0.2272.118 中进行测试,第一个块运行得更快。为什么?因为 JavaScript 引擎知道数组大小?

基准测试在这里http://jsperf.com/poerttest/2

0 投票
2 回答
127 浏览

javascript - 为什么是`exp && "t" || "f"` 比 inline-if-else 慢得多?

为什么逻辑表达式n 比if-elseinline-if-else慢两倍?

  • 所有函数的评估结果都相同。
  • 1所有函数都从and的数组中传递一个值0,请参阅这个jsperf 测试
0 投票
1 回答
469 浏览

javascript - jquery克隆多次和appendTo性能

我想多次克隆一个元素(比如 4 次)并将它们附加到元素的父级。

我在 jQuery 中编写了以下代码

这是正确的方法吗?或任何更好的方法来做到这一点?我在网上阅读了有关文档片段的信息并写了以下内容。

两者都工作正常。第二个对性能有什么影响吗?

0 投票
1 回答
1424 浏览

html - 画布尺寸对性能很重要吗?

在构建一个小游戏时,出现了一个关于 Canvas API 的一般性能相关问题:我只在大画布的一小块空间上清理和绘图。在这种情况下,画布的大尺寸会降低性能还是仅绘制像素的数量很重要?例如,当某些事情发生变化时,是否会重新绘制整个画布?

0 投票
2 回答
2077 浏览

sorting - 为什么插入排序比合并排序快?

我在 jsperf.com 上创建了 3 种排序方法的测试:冒泡、插入和合并。关联

在测试之前,我创建了随机数从 0 到 1Mln 的未排序数组。每次测试都表明插入排序比合并排序快。这种结果的原因是什么,如果合并排序时间 O(n log(n)) 而插入和冒泡排序在 这里有 O(n^2) 测试结果