问题标签 [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 投票
4 回答
972 浏览

javascript - 测试和比较 jQuery 插件的性能

那里有大量的 jQuery 插件,所以我想确保当我找到两个或更多做同样事情的插件时,我会选择最好的。

我通常将文件大小作为性能的第一个指标,但我想知道我还能做些什么来测试和比较这些插件的性能。

我可以使用 jsperf.com 吗?把我想比较的那些插件扔进去。结果会是一个很好的绩效指标吗?

还有其他建议吗?

谢谢。

0 投票
3 回答
1491 浏览

javascript - HTML5 Canvas 碰撞检测“globalCompositeOperation”性能

早晨,

在过去的几个月里,我一直在修改 HTML5 Canvas API,并且从中获得了很多乐趣。

我逐渐创建了一些小游戏,纯粹是为了自学游戏开发的注意事项。我现在能够进行基本的碰撞检测,即圆圈和平台之间的碰撞(对于大多数人来说相当简单,但当你第一次让它工作时感觉就像一个相当大的成就,当你明白什么时会更好实际上正在发生)。我知道像素碰撞检测并非适用于所有游戏,因为在许多情况下,您可以使用上面讨论的方法获得足够好的结果,而且这种方法显然在资源上相当昂贵。

但我只是有一个脑电波(很可能其他人已经想到了这一点,而我已经走得很远了,但我用谷歌搜索了一下,什么也没找到)......所以这里......

是否可以使用/利用画布的“globalCompositeOperation”功能。我最初的想法是将其方法设置为“异或”,然后检查画布上的所有像素是否透明,如果找到像素,则必须发生碰撞。正确的?显然,此时您需要确定所讨论的像素被哪些对象占据以及如何做出反应,但是对于其他其他技术,您必须这样做。

说是画布已经在幕后进行了这种碰撞检测,以便确定形状何时重叠?是否有可能在此基础上进行扩展?

有任何想法吗?

加里

0 投票
2 回答
1332 浏览

c# - c# 代码的速度测试站点?

哪个更有效,“data.Length==0”还是“data==string.Empty”?

在这个问题中,有一个描述执行时间的答案。

对于 Javascript:我知道有一个网站叫http://jsperf.com/

c#站点呢?有没有 ?

0 投票
1 回答
110 浏览

javascript - 递归函数的奇怪 jsPerf 行为

我在 jsPerf 的测试用例中有以下代码:

如果将其复制到控制台并运行quicksort( arr ),您会看到它正确返回了一个排序数组。

但由于某种原因,在jsPerf 上的这个测试用例中,我的快速排序函数似乎只返回一个数字(如“Perparation Code Output”所示)。它的运行速度似乎也比它应该的要快。

任何人对正在发生的事情的想法将不胜感激。

0 投票
3 回答
13510 浏览

javascript - javascript中的for循环与forEach性能和jsperf结果的可信度

我不相信 jsperf 测量 for 循环与 forEach 性能的结果。至少对于我机器上的 chrome 和 firefox,结果与 jsperf 中宣传的完全不同。
http://jsperf.com/foreach-vs-loop(我的)
http://jsben.ch/#/BQhED(更受欢迎)
在我运行 Ubuntu 11.10 的笔记本电脑上,我在 Firefox 中得到以下结果:

不幸的是,Chrome 不会返回 console.timeEnd() 的结果,但运行时间是相同的,只是在 Chrome 中更快。我观察到 forEach 在 Chrome 中比 for 循环快 10 倍,在 Firefox 中快 3 倍。
在 Chrome 中,我大约得到以下运行时间:

这是我在 Firefox 和 Chrome 控制台中运行的代码。

运行一百万个项目的测试具有相同的性能差异。您能否告知我是否遗漏了什么,我应该相信 jsperf 结果而不是我正在观察的真实结果?当然,我确实相信我现在可以在浏览器中看到的真实结果。

编辑:与@Blender 讨论时发现的测试场景并不客观。看起来 js 优化器优化了 forEach 循环,其中没有任何操作,因此如果有一些真实代码,它会掩盖运行时间。

0 投票
2 回答
241 浏览

javascript - 使用 Array.push 方法

请告诉我,将值推入数组的更快方法是什么?

我写了一个简单的测试来比较pusha[a.length]=方法:

推.js:

主.js:

我得到了以下结果:

铬合金:

苹果浏览器:

火狐:

似乎Array.push更快,但为什么有些库会使用array length呢?这种方法有什么好处?为什么 Chrome 这么慢?也许存在一些更快的方法?

0 投票
2 回答
1835 浏览

javascript - 为什么这个 window.innerheight 的性能这么差?

我正在测试一个我的朋友注意到的测试用例。他在循环中使用 window.innerheight,并且 fps 出现了非常显着的下降。

这是我为测试它而创建的 jsperf 的链接http://jsperf.com/innerheight

我能想出的唯一解释是,这是一个吸气剂,每次调用都会计算实际高度。那正确吗?有什么文件可以验证吗?

0 投票
1 回答
193 浏览

javascript - 为什么 querySelectorAll 在 jsPerf 上使用 data-xyz 工作,但在我的代码中却不行?

我在玩jsperf,querySelectorAlldata-xyz属性。

这是我当前的 jsperf:jqmData 与属性选择器

关键部分在js测试中:

请注意,我没有使用任何方括号 [],它仍然可以正常运行,并且比所有其他选择器都好。我将它提高到一个页面上的 200 多个数据角色元素,它仍然运行得更快。

然后我在这里尝试了我自己的测试页面(参见 Firebug),唉......当我省略方括号时,nodeList 是空的。

问题:
jsperf 使用了什么魔法,所以选择器在那里工作,而不是在我的虚拟网站上工作。

0 投票
2 回答
1734 浏览

javascript - 是什么让 my.class.js 如此之快?

我一直在查看my.class.js的源代码,以了解是什么让它在 Firefox 上运行得如此之快。这是用于创建类的代码片段:

extend函数仅用于将第二个对象的属性复制到第一个对象(可选地覆盖现有属性):

extendClass函数将所有静态属性复制到类上,并将所有公共属性复制到类的原型上:

这一切都很简单。当你创建一个类时,它只是返回你提供给它的构造函数。

然而,让我无法理解的是,创建此构造函数的实例如何比创建用Vapor.js编写的相同构造函数的实例执行得更快

这就是我想要理解的:

  1. 像 my.class.js 这样的库的构造函数是如何在 Firefox 上如此快速地创建这么多实例的?库的构造函数都非常相似。执行时间不应该也相似吗?
  2. 为什么类的创建方式会影响实例化的执行速度?定义和实例化不是分开的过程吗?
  3. my.class.js 从哪里获得这种速度提升?我没有看到构造函数代码的任何部分应该使它执行得更快。事实上,遍历一个长原型链MyFrenchGuy.Super.prototype.setAddress.call应该会显着减慢它。
  4. 构造函数是否被 JIT 编译?如果是这样,那么为什么其他库的构造函数也不被 JIT 编译?
0 投票
1 回答
1010 浏览

javascript - 使用 Object.create(null) 创建空对象的影响和好处

首先,我做了一个快速的 jsperf 测试用例,以显示明显的 :比使用语法
Object.create(null)创建对象要慢得多。http://jsperf.com/js-object-creation-null-proto{}

但鉴于这一事实,前一种情况有时是否可以成为优化和性能方面的一个很好的选择?换句话说,操作最轻量级的 js 对象是否可以足够提高性能,以至于在某些情况下使用它成为一个合理的选择。

我指的是您将大量访问对象属性或大量使用 for in 循环的情况。

这种方法在库中使用是否风险太大,人们可能会被引导处理这些不拥有标准Object原型带来的标准属性的对象?

另外,您知道创建最轻量级 js 对象的另一种(更快)方法吗?

PS:我做了一个简短的测试案例来展示使用 aObject.create(null)和访问属性比 with 快一点的案例{}
http://jsperf.com/js-object-creation-and-accessing-properties