草庐IT

Performance

全部标签

javascript - 在循环中使用 indexOf 是个坏主意吗?

我正在为一次技术面试研究大O表示法,然后我意识到javascript的indexOf方法可能具有O(N)的时间复杂度,因为它遍历数组的每个元素并返回找到它的索引。我们还知道,O(n^2)(n平方)的时间复杂度对于较大的数据而言并不是一个好的性能度量。那么在循环中使用indexOf是个坏主意吗?在javascript中,通常会看到在循环中使用indexOf方法的代码,可能是为了衡量相等性或准备一些对象。我们是否应该在必要时更喜欢对象而不是数组,因为它们提供具有恒定时间性能O(1)的查找。如有任何建议,我们将不胜感激。 最佳答案 在循环

javascript - 更改对象的 [[Prototype]] 后,JavaScript 环境最终会恢复吗?

所以,我已经阅读了MDNdisclaimersandwarnings,我读过greatansweronthesubject,但还有一些我想知道的。这个问题实际上来self对另一个问题的回答,here.假设我决定做肮脏的事。我会后悔一辈子的事情。这会让我永远蒙羞,让我的家族名誉扫地。有目的的、深思熟虑的结束——好了,够了。无论如何,它在这里:letproto=Object.getPrototypeOf(Function.prototype);Object.setPrototypeOf(Function.prototype,{iBetterHaveAGoodReasonForDoingTh

javascript - 为什么 Firefox 和其他浏览器在计算哪个数字更大时表现相反?

两天前,当我找到jsperf.com里面有很多javascript性能测试的集合,我浏览了几个测试。其中一项测试是this,它比较Math.min(a,b)对比a.当我在GoogleChrome上运行这个测试时,结果是a比Math.min(a,b)快得多(在Chrome14上,第一个是53,661,381ops/s,第二个是419,830,711ops/s)。其他网络浏览器也有类似的结果。但是在firefox上,结果恰恰相反。Math.min(a,b)比a快得多!第一个是374,219,869ops/s第二个是79,490,749ops/s在Firefox6上。当我在Facebook上

javascript - jquery.inArray() 与 Object.hasOwnProperty() 之间的性能差异?

我有一种情况可以选择将字符串键的集合实现为一个对象:$.each(objects,function(key,object){collection[key]="doesn'tmatter";});或者一个数组:$.each(objects,function(key,object){collection.push(key);});我希望能够快速确定集合是否包含给定的键。如果集合是一个对象,我可以使用:if(collection.hasOwnProperty(key_to_find)){//foundit!...}else{//didn'tfindit...}如果集合是一个数组,我可以使用:

javascript - 如何获得基于 Javascript 的图表库的渲染性能?

前言我是Javascript编程的新手,但我已经使用各种库有一段时间了。我的任务是获取各种图表库的性能指标,以根据一些可用的库(例如AmCharts、HighCharts、SyncFusion等)找到最快和最灵活的图表库。我已经尝试过JSPerf,看起来我正在获取代码执行的性能指标,而不是实际呈现的图表,这是我们想要的指标(也就是用户体验)。我试过在header的Javascript代码中使用performance.now()并在显示图表的标签周围使用,但这两种方法都不起作用。根据渲染获取这些性能指标的最佳方法是什么? 最佳答案 简

javascript - 什么是 jQuery $.fly 插件?

我偶然发现了jQuery.fly()-flyweightpattern性能基准和查看测试代码后theplugincodeitself(alsoseebelow),我想不通它有什么用?我在互联网上搜索过,找不到有关插件本身的任何有用信息。这是一种比在.each中使用$(this)更有效的循环/迭代数组的方法吗?使用jQuery对象进行迭代a.each(function(){$(this);});使用jQuery.fly()进行迭代a.each(function(){$.fly(this);});在Firefox4.0.1中几乎快2倍在Chrome12中快了3倍.飞(function($)

javascript - 使用 ">>>"运算符改进循环?

我正在将mootools从1.3.2更新到1.4.1。我看到了一个奇怪的变化。从此for(vari=0,l=this.length;i对此for(vari=0,l=this.length>>>0;i以这种方式使用“>>>”运算符如何提高性能?你怎么看? 最佳答案 >>>按位运算符在0和2^32-1(4,294,967,295)之间并包括在内。通过使用>>>,框架确保循环不会执行接近无限次。附言。代码上下文:Array.implement({every:function(fn,bind){for(vari=0,l=this.lengt

javascript - 在 JavaScript 中检查字符串是否为空(即仅包含空格)的最高效方法?

我需要编写一个函数来测试给定的字符串是否在某种意义上是“空白”,即它只包含空白字符。空白字符如下:'\u0009','\u000A','\u000B','\u000C','\u000D','','\u0085','\u00A0','\u1680','\u180E','\u2000','\u2001','\u2002','\u2003','\u2004','\u2005','\u2006','\u2007','\u2008','\u2009','\u200A','\u2028','\u2029','\u202F','\u205F','\u3000'这个函数会被调用很多次,所以它必须非常非

javascript - Processing.js 值得吗?

我一直在认真研究ProcessingJS部分,这主要是由于库的膨胀。我发现像BallDroppings这样的作品不要使用库的Processing语法解析器,这很好,因为我认为它会进一步减慢页面速度,尤其是增加初始加载和设置时间。不过,我想知道是否值得将它基本上用作像UnderscoreJS这样的大型实用程序库。例如,与今天的其他库(如RaphaelJS)相比,它使用SVG的实现有多好?有没有人足够广泛地完成ProcessingAPI的实现?当我浏览时,我看到了很多我并不真正需要的样板,以及一些有问题的编码实践实例。但是库仍然似乎表现不错,至少在ProcessingJS主页上是这样,尽管

Javascript对象函数参数性能

我阅读了一些关于当参数是对象时javascript函数参数传递如何工作的线程;我注意到传递方法有很多混淆,至少在术语上是这样:按引用传递、按复制引用传递等等。这个问题不是关于这个传递方法如何命名,或者它在内部是如何工作的,而是涉及对这个问题的某种回答。我有一些非常大的大对象,要作为参数传递给函数;我需要了解对象传递是否意味着对象的一些副本,因此内存消耗、计算工作、内存泄漏风险与传递的对象的大小成正比,对于每个函数调用(我有很多调用),或者如果它以非大小比例结果的方式传递。由于在函数中改变对象的属性会改变外部作用域中的对象,但改变对象本身不会,我认为函数内部用于存储和“引用”参数的内存不