问题标签 [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 回答
650 浏览

javascript - 如何在 jsperf 中指定测试浏览器?

我发现 jsperf 中的很多测试用例可以在很多浏览器中运行并在 browserscope 中显示结果。

但是当我设置测试时,测试只能在我自己的浏览器版本中运行。

如何在所有版本的浏览器中运行我的测试用例?

0 投票
1 回答
13737 浏览

javascript - Array.map 的 Javascript 性能

刚刚在jsperf中写了一些测试用例来测试命名函数和匿名函数在使用Array.map和其他替代方案时的区别。

http://jsperf.com/map-reduce-named-functions

(对不起url名称,这里没有测试Array.reduce,我在完全决定我要测试什么之前命名了测试)

一个简单的 for/while 循环显然是最快的,但我仍然对慢 10 倍以上感到惊讶Array.map......

然后我尝试了 mozilla 的 polyfill https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map#Polyfill

然后我尝试了一个我自己编写的简单实现......

结果总结:

从最快到最慢:

  1. 对于简单/同时(大致相同)
  2. Map3(我自己的实现)
  3. Map2 (Mozilla polyfill)
  4. Array.map
  5. 对于在

观察

有趣的是,命名函数通常比使用匿名函数快一点(大约 5%)。但我注意到,polyfill 在 Firefox 中使用命名函数较慢,但在 chrome 中更快,但 chrome 自己的地图实现在命名函数时较慢......我每个测试了大约 10 倍,所以即使它不是完全密集的测试(jsperf已经这样做了),除非我的运气这么好,否则它应该足以作为指导。

此外,chrome 的map功能比我机器上的 firefox 慢 2 倍。完全没想到。

而且……firefox自己的Array.map实现比Mozilla Polyfill慢……哈哈

我不确定为什么 ECMA-262 规范规定map可以用于数组以外的对象(http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.19)。这使得整个地图功能慢 3-4 倍(如我的测试所示),因为您需要在每个循环中检查属性是否存在......

结论

如果您认为不同浏览器的执行方式略有不同,那么命名函数和匿名函数之间并没有太大区别。

归根结底,我们不应该进行太多的微优化,但我发现这很有趣 :)

0 投票
1 回答
59 浏览

javascript - 非单词字符的正则表达式比排除字母范围慢

http://jsperf.com/regex-not-word-selector

为什么/\W/g表现比 差/[^A-Za-z]/g

它是特定于 JS 的吗?

0 投票
1 回答
119 浏览

javascript - 为什么 jsperf 根据 HTML 和 setup 中的准备代码给出不同的结果?

我试图查看在 javascript 中将字符串转换为数字的哪些方法性能更高,所以我去 jsperf 看看哪种方法效果最好。但是,根据初始变量是在 Benchmark.prototype.setup() 函数中定义还是直接在全局范围内定义,我似乎得到了不同的结果。

在全球范围内

在 Benchmark.prototype.setup 中

关于为什么会发生这种情况的任何想法?

0 投票
1 回答
669 浏览

javascript - 缩小 JavaScript 的执行时间会变慢吗?

我正在测试缩小的 JavaScript 在移动设备上的性能是否更好。在研究这个主题时,我遇到了这个 jsperf 测试:

http://jsperf.com/minified-vs-crushed/2

根据这个测试,删除空格会加快执行速度,但缩小代码实际上会使其运行速度变慢。我知道缩小应该加快加载时间,但它会使执行时间变慢吗?有什么我不明白的地方吗?

进一步阅读:

缩小的 javascript 会提高性能吗?

0 投票
0 回答
34 浏览

javascript - JSPerf 测试用例给出错误但在 codepen 上工作正常

谁能告诉我为什么这个 JSPerf 测试用例给了我错误?我多次查看代码,我找不到任何错误。我什至在 codepen 中的代码,一切都运行良好。

JSPerf

0 投票
1 回答
808 浏览

javascript - 为什么 .html() 用于相同目的时比 .text() 快得多?

我在玩 jQuery.text().html()方法并运行一些简单的 jsPerf 测试时,我惊讶地发现.html()检索文本的速度几乎快了一个数量级:

  • $div.text()– 88,496 次操作/秒
  • $div.html()– 592,028 次操作/秒

为什么.text().html()结果相同时慢得多?.text()执行哪些操作会.html()跳过以解释这种差异?

我知道每种方法都有不同的目的;我很好奇它们用于相同目的的情况。

0 投票
0 回答
15 浏览

browser - jsperf 如何处理浏览器错误?

我想测试本机实现的 es6 功能。

如果浏览器不支持该功能,我希望测试不要显示在 browserscope 图中。

这会“正常工作”(jsperf 取消测试而不显示在图表中)还是有一种特殊的方法可以取消 jsperf 测试?

我自然会尝试这个,但我想知道是否有“jsperf 方式”来管理这个。

0 投票
1 回答
603 浏览

search - 如何找到我的 jsperf 测试?

现在是本周的菜鸟问题。如何找到我的 jsPerf 测试?据我所知,没有“帐户”,寻找我的名字或网址似乎没有帮助!

我还想按姓名、网站等搜索,以及我认识的其他人的“个人”搜索查询。

——欧文

0 投票
1 回答
66 浏览

javascript - 设置函数的速度不是预期的

我正在比较两种不同类型的 setter 的性能,如下所示:

区别在于 setter 的存储位置:q.x.setvs z.x_set。我希望该z变体运行得更快,因为它需要更少的表查找。相反,该q变体始终更快。任何想法为什么?这是 jsperf:http: //jsperf.com/hq7f3