• 关于

    jsperf

    的搜索结果

回答

ProfilerJSPerf(http://jsperf.com/nexttick-vs-setzerotimeout-vs-settimeout)Dromaeo

小柯卡力多 2019-12-02 03:22:02 0 浏览量 回答数 0

回答

有几种检查变量是否为数组的方法。最好的解决方案是您选择的解决方案。 variable.constructor === Array 这是Chrome上最快的方法,很可能是所有其他浏览器上的方法。所有数组都是对象,因此检查构造函数属性对于JavaScript引擎来说是一个快速的过程。 如果在确定对象属性是否为数组时遇到问题,则必须首先检查该属性是否存在。 variable.prop && variable.prop.constructor === Array 其他一些方法是: Array.isArray(variable) 更新2019年5月23日使用Chrome 75,喊出@AnduAndrici邀请我与他的问题重温这段 最后一项是,在我看来最丑陋的,它是对一个最慢的速度最快。作为第一个示例,运行速度约为1/5。这个家伙慢了大约2%到5%,但这很难说。牢固使用!结果给人留下了深刻的印象。Array.prototype实际上是一个数组。您可以在这里阅读有关它的更多信息https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray variable instanceof Array 作为第一个示例,此方法的运行速度约为1/3。如果您只关注漂亮的代码,而不是关注太多性能,那么它仍然很坚固,看上去更干净。请注意,检查数字并不variable instanceof Number总是返回false。更新:instanceof现在速度提高了2/3! 所以还有另一个更新 Object.prototype.toString.call(variable) === '[object Array]'; 这个家伙是最慢的尝试检查数组的人。但是,这是您要寻找的任何类型的一站式商店。但是,由于您要查找数组,因此请使用上面最快的方法。 另外,我进行了一些测试:http : //jsperf.com/instanceof-array-vs-array-isarray/35因此,请找点乐子并检查一下。 注意:由于jsperf.com关闭,@ EscapeNetscape创建了另一个测试。http://jsben.ch/#/QgYAV我想确保当jsperf再次联机时,原始链接保持不变。 问题来源于stack overflow

保持可爱mmm 2020-01-08 15:48:37 0 浏览量 回答数 0

回答

无论什么选择器,美刀这个函数都很重,都应该把结果暂存下来复用关于选择器本身的速度,理论上来说现代浏览器的情况下(也就是委托给了querySelector的时候)应该是和.class相差无几,如果.class比[attr=val]要快,那应该是浏览器专门为它做了优化。因为本质是一样的(遍历dom树)其实这个问题应该是用数据说话的。我google了一下jsperf selector attribute vs cssclas果然第一条就是答案。贴个比较新的有点数据的revisionID最快毫无疑问,然后就是浏览器确实对class做过优化,速度会比attribute快,但和ID没的比最后要说的是,即使是用ID,美刀这个函数还是相当重,应该把结果暂存下来复用

一生有你llx 2019-12-02 02:19:30 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

无论什么选择器,美刀这个函数都很重,都应该把结果暂存下来复用关于选择器本身的速度,理论上来说现代浏览器的情况下(也就是委托给了querySelector的时候)应该是和.class相差无几,如果.class比[attr=val]要快,那应该是浏览器专门为它做了优化。因为本质是一样的(遍历dom树)其实这个问题应该是用数据说话的。我google了一下jsperf selector attribute vs cssclas果然第一条就是答案。贴个比较新的有点数据的revisionID最快毫无疑问,然后就是浏览器确实对class做过优化,速度会比attribute快,但和ID没的比最后要说的是,即使是用ID,美刀这个函数还是相当重,应该把结果暂存下来复用

小旋风柴进 2019-12-02 02:19:30 0 浏览量 回答数 0

回答

我最近运行了该测试,发现Set的性能远远好于包含1000个项目的数组(同一时间范围内可能发生的操作的大约10倍)。并取决于浏览器,以类似测试击败或输给Object.hasOwnProperty。 Set和Object都有其“ has”方法,这些方法似乎可以摊销到O(1),但是根据浏览器的实现,单个操作可能会花费更长或更长时间。 https://jsperf.com/set-has-vs-object-hasownproperty-vs-array-includes/1 如果要在不同的浏览器/环境中运行自己的测试,请执行以下操作。

保持可爱mmm 2020-02-08 21:53:36 0 浏览量 回答数 0

回答

好吧,我本来会说这很昂贵,但是后来我在jsperf.com上写了一个小测试,令我惊讶的i<array.length是,在Chrome中使用它的速度实际上更快,而在FF(4)中则没关系。 我怀疑长度存储为整数(Uint32)。根据ECMA规范(第262版,第5页,第121页): 每个Array对象都有一个length属性,该属性的值始终是小于2 32的非负整数。length属性的值在数值上大于名称为数组索引的每个属性的名称;每当创建或更改Array对象的属性时,都会根据需要调整其他属性以保持该不变性。具体地说,每当添加一个名称为数组索引的属性时,如果需要,将length属性更改为比该数组索引的数值大一的值;并且只要更改length属性,就会自动删除名称为数组索引且其值不小于新长度的每个属性。此约束仅适用于Array对象自身的属性,不受长度或数组索引属性(可能从其原型继承的属性)的影响 !我不知道我是否习惯过这种语言... 最后,我们总是有落后的浏览器。在IE(9,8,7)中,缓存的长度确实更快。我说,不使用IE的更多原因之一。

保持可爱mmm 2020-02-09 12:10:39 0 浏览量 回答数 0

回答

apply 方法调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。 call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。 Function.prototype.apply和Function.prototype.call 的作用是一样的,区别在于传入参数的不同;第一个参数都是,指定函数体内this的指向;第二个参数开始不同,apply是传入带下标的集合,数组或者类数组,apply把它传给函数作为参数,call从第二个开始传入的参数是不固定的,都会传给函数作为参数。call比apply的性能要好,平常可以多用call, call传入参数的格式正是内部所需要的格式, 性能问题,出处:https://github.com/noneven/__/issues/6 以前看jQuery源码的时候有看到在源码的注释中有些过call的性能会比apply好,在lodash的源码中也同样的发现有call比apply性能更好的注释。这里我在jsperf上写了几个test case,验证了一下确实call比apply的性能更好。 lodash源码apply方法重写无指向无参数对比:有指向无参数对比:无参数有指向:有参数有指向对比: 总结: 在我们平时的开发中其实不必关注call和apply的性能问题,但是可以尽可能的去用call,特别是es6的reset解构的支持,call基本可以代替apply,可以看出lodash源码里面并没有直接用Function.prototype.apply,而是在参数较少(1-3)个时采用call的方式调用(因为lodash里面没有超过4个参数的方法,PS如果一个函数的设计超过4个入参,那么这个函数就要考虑重构了)

九旬 2020-05-24 11:49:28 0 浏览量 回答数 0

回答

for循环和forEach方法之间最实质的区别在于,对于前者,您可能会break跳出循环。您可以continue通过简单地从传递给的函数返回来进行模拟forEach,但是无法完全停止循环。 除此之外,两者有效地实现了相同的功能。由于变量提升,另一个小差异涉及for循环中索​​引的范围(以及所有包含变量的范围)。 // 'i' is scoped to the containing function for (var i = 0; i < arr.length; i++) { ... } // 'i' is scoped to the internal function arr.forEach(function (el, i) { ... }); 但是,我发现它forEach更具表现力-它表示您遍历数组的每个元素的意图,并且为您提供了对该元素的引用,而不仅仅是索引。总体而言,它主要取决于个人喜好,但是如果可以使用forEach,我建议您使用它。 这两个版本之间还有一些实质性差异,特别是在性能方面。实际上,forEach如本jsperf测试所示,简单的for循环的性能要比方法好得多。 是否需要这种性能取决于您自己决定,在大多数情况下,我倾向于表现力胜于速度。此速度差异可能是由于在稀疏数组上进行操作时基本循环与方法之间的较小语义差异所致,如本答案所述。 如果您不需要行为forEach和/或需要尽早突破循环,则可以使用Lo-Dash _.each作为替代,它也可以跨浏览器工作。如果您使用的是jQuery,它还提供了一个类似的$.each,只需注意每个变体中传递给回调函数的参数的差异。 (对于forEachpolyfill,如果您选择使用那条路线,它应该可以在较旧的浏览器中正常工作。)

保持可爱mmm 2020-02-08 13:51:16 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站