草庐IT

Performance

全部标签

javascript - OR 操作 ( || ) 与 inArray() 的性能

假设您要检查用户在表单域中输入的输入字符串。哪个是根据可能值列表检查此输入的最快方法?以下示例使用jQuery。第一种方法:使用||if(input=="firstValue"||input=="secondValue"||...){...}第二种方法:使用inArray()if($.inArray(input,array)>=0){...}这两种方法有什么显着差异吗? 最佳答案 您不想要最快但最易读的方式。对于超过2或3个值,这就是in_array()(JavaScript:array.indexOf(value)>=0)。性能差

Javascript 可选类型提示

当编程语言是静态类型时,编译器可以更精确地分配内存,因此通常性能更高(在所有其他条件相同的情况下)。我相信ES4引入了可选的类型提示(据我了解,由于actionscript,Adobe在为其规范做出了巨大贡献)。结果是javascript正式支持类型提示吗?ES6会支持原生变量的可选类型提示吗?如果Javascript确实支持类型提示,是否有任何基准可以显示它在性能方面的返回?我还没有看到一个开源项目使用它。 最佳答案 我的理解是,通过在各个站点上聆听许多Javascript演讲,类型提示不会像人们认为的那样提供帮助。简而言之,如果

javascript - 带 ID 的 jQuery 选择器的性能

我知道在jQuery中如果我们使用ID来选择元素,它非常高效。我有一个关于这个选择器的问题:请考虑这3个选择器:$('#MyElement')$('#Mytbl#MyElement')$('#Mytbl.MyClass')哪个更快,为什么?如何检查在jQuery中选择元素所用的时间? 最佳答案 直接ID选择器总是最快。我已经根据您的问题创建了一个简单的测试用例...http://jsperf.com/selector-test-id-id-id-id-class选择嵌套ID是错误的,因为如果ID是唯一的(它应该是唯一的),那么它是否

javascript - Javascript : while or for statements? 什么更有效率

我最近有机会在javascript中做循环,我很困惑是使用for循环还是while语句。vari=foo.length;while(i--){}或for(vari=0;i我想从javascript专家那里知道哪一个使用起来更有效,以及我们应该在什么情况下相应地使用它们。是与Java中的原因相同还是有所不同。 最佳答案 从理论上讲,while循环更快,因为for循环每次都会查找foo的length属性时间虽然循环,但在现实世界中使用它会产生不可估量的小差异。 关于javascript-Ja

Javascript 字符串连接比这个例子更快?

我必须在Javascript中连接一堆字符串,并且正在寻找最快的方法。让我们假设Javascript必须创建一个大的XML"file",该文件自然包含许多小字符串。所以我想出了:varsbuffer=[];for(varidx=0;idxDatacomeshere...bla...’);}//Nowwe"send"ittothebrowser...alert(sbuffer.join(”));不要注意循环或构建示例的其他“复杂”代码。我的问题是:对于未知数量的字符串,您是否有更快的算法/方法/想法来将许多小字符串连接成一个大字符串? 最佳答案

javascript - 避免 HTML 文档回流

我有几百个像这样的“行”元素:我需要在它们已经呈现在页面上之后获取它们的clientHeight。我知道“clientHeight”属性强制回流,这会影响我的性能,因为它们太多了。但是-它们已经被渲染并且我知道它们的大小在它们被渲染的时间和我查询它们的高度的时间之间没有变化。有没有办法告诉浏览器在查询高度时不要重排?此外-webkit检查员说:Layouttreesize5901LayoutscopeWholedocument而且div位于绝对定位的祖先中-难道不应该只回流绝对定位的元素吗?编辑:所以提供的答案是正确的。我实际上弄脏了布局,因为我有这个循环:rows.each(func

javascript - 使用 BSF 预处理器发送 JSON POST 请求

我正在使用JMeter编写一些性能测试。我需要做的一件事是动态构建一个巨大的json请求并将其作为POST请求有效载荷发送。使用BSF预处理器,我能够动态修改有效负载,但是我的javascript字符串正在编码,而我想发送它而不进行编码。我不确定BSF预处理器如何阻止它被编码。我目前用来更改我的POST请求负载的命令如下:varjsonData='[{"item":"value","something":"everything"}]';sampler.addArgument("",jsonData);如果您能给我指出一些示例,这些示例清楚地解释了如何使用bsf预处理器,我将不胜感激。任

JavaScript 循环性能 - 为什么将迭代器递减到 0 比递增更快

在他的书中EvenFasterWebSitesSteveSounders写道,提高循环性能的一种简单方法是将迭代器递减到0,而不是递增到总长度(实际上该章节是由NicholasC.Zakas编写的)。根据每次迭代的复杂性,此更改最多可节省原始执行时间的50%。例如:varvalues=[1,2,3,4,5];varlength=values.length;for(vari=length;i--;){process(values[i]);}这与for循环、do-while循环和while循环几乎相同。请问这是什么原因呢?为什么递减迭代器要快得多?(我感兴趣的是这方面的技术背景,而不是证明

javascript - react 大数据 block 的非阻塞渲染

最近我开始学习react,想知道是否有某种模式可以用于大数据的非阻塞UI线程渲染。比方说,我们取thisexample:,点击创建很多项目,设置数量,比方说10000,我们将获得卡住的UI将近10秒。它使用可观察对象平滑地更新,一旦完成渲染,我明白了,但是有没有办法以block的形式平滑地渲染它?通常,您会设置某种数组,将其切片,比方说50,处理这些数组并将setTimeout设置为0以切片另一个50,依此类推。重复直到数组的长度为0。是否有反应组件的模式来做到这一点?也许一些插件或直到mixin? 最佳答案 您可以使用reques

javascript - Zombie.js pressButton 长回调延迟

我一直试图通过使用一堆console.logs来解决这个问题,但仍然无法弄清楚为什么这些加载时间这么长。所以我的Mocha单元测试文件中的beforeEach中有以下代码。browser.fill('email','test1@test.com');browser.fill('password','testtest');browser.pressButton('Login').then(function(){console.log("#100-"+newDate().getTime());done();});在这种情况下按下按钮将进行一些重定向,然后最终显示仪表板页面。在该html文件