草庐IT

Performance

全部标签

javascript - Chrome 开发工具框架时间轴中的大 "idle"条

我正在使用requestAnimationFrame绘制一些形状(arc、lineTo等)。没什么特别的,但我注意到偶尔会有一些不稳定的动画。我使用Chrome开发工具中的时间轴检查器进行分析,发现每帧有大量空闲时间,其中一些将FPS降至60以下(见屏幕截图)。是否有已知的原因或解决方案? 最佳答案 在Canvas上绘制形状显然在计算上很昂贵,并且必须属于“未被DevTools检测的事件”。我通过首先将形状绘制到屏幕外Canvas缓存,然后使用drawImage复制回主Canvas来解决我的性能问题。

javascript - 监听浏览器回流事件

我正在尝试监听浏览器reflow-events了解代码的哪些部分是最昂贵的部分。回流发生在某些东西必须被(重新)绘制到屏幕时,例如当新元素被添加到DOM时。有没有办法在/使用Javascript中收听这些事件,以进行进一步分析? 最佳答案 我认为解决方案是使用DOMMutationObserver类。正如文档指出的那样:ItisdesignedasareplacementforMutationEventsdefinedintheDOM3Eventsspecification.ApiDocs网站上的示例非常不言自明//selectth

javascript - Firefox JavaScript 算法性能异常

请在firefox上运行此测试。http://jsperf.com/static-arithmetic您如何解释结果?这个b=a+5*5;b=a+6/2;b=a+7+1;执行速度比快得多b=a+25;b=a+3;b=a+8;为什么? 最佳答案 首先,你的测试有点缺陷。你应该比较以下内容:b=a+8-2;对比b=a+6b=a+8+2;对比b=a+10b=a+8/2;对比b=a+4b=a+8*2;对比b=a+16您会注意到一些有趣的事情:只有第二对项中有+或-的问题速度较慢(除法和乘法很好)。加/减和乘/除的实现必须有明显的区别。确实有

javascript - 浏览器是根据更改重新呈现整个页面还是仅重新呈现特定元素?

假设我有一个id为#msg的元素,并且在特定条件下我想向它添加一个类以应用样式,例如使文本显示为红色。我可以做$('#msg').addClass(theclass)我的问题是浏览器如何react?它是重新呈现所有页面还是重新呈现特定元素? 最佳答案 对于您的示例(addClass),这取决于您添加的类中的内容。添加类本身只会修改目标节点上的属性。一些更改会导致重绘,即更改颜色、bgcolor等时。只有应用了新CSS的元素才会重新呈现。某些更改会导致回流,即当元素或其内容占用的可见空间发生尺寸或位置变化时。根据他们自己的,以及他们的

javascript - 为什么 chrome 很难在 Canvas 上显示大量图像,而其他浏览器却不能?

我们正在使用HTML5Canvas,一次显示大量图像。这工作得很好,但最近我们遇到了chrome问题。在Canvas上绘制图像时,您似乎会达到性能迅速下降的某个点。这不是一个缓慢的效果,看起来你从60fps直接到2-4fps。这是一些重现代码://Helpers//https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/randomfunctiongetRandomInt(min,max){returnMath.floor(Math.random()*(max-min+1))+m

javascript - 使用 Aurelia 高效渲染大型数据表

在使用Aurelia渲染大型数据表时,我遇到了性能问题。即使是中等大小的表格(20x20),Chrome也不会低于200毫秒,MSEdge需要大约800毫秒,而IE11需要大约2秒。如果您想添加(虚拟)滚动,200毫秒也是一个问题。处理时间随着每个表格单元格的绑定(bind)数量而增加。我将一个(example)放在一起,它绑定(bind)了“css”、“类”,当然还有单元格内容。${getCellText(column,row)}我有什么可以提高性能的想法吗?根据最初的建议,我试图避免嵌套重复,但在我的情况下这是不可能的,因为列和行都是动态的。 最佳答案

javascript - jQuery 代码组织和性能

在对这个主题做了一些研究之后,我一直在试验很多模式来组织我的jQuery代码(例如,RebeccaMurphy在jQuery大会上就此做了presentation)。昨天我检查了(揭示)模块模式。结果看起来有点像YUI我认为的语法://globalnamespaceMyNameSpaceif(typeofMNS=="undefined"||!MNS){varMNS={};}//obfuscatemodule,justservingasaverysimpleexampleMNS.obfuscate=function(){//functiontocreateanemailaddressfr

javascript - 从 javascript 检测连接协议(protocol)(HTTP/2,spdy)

是否可以获取浏览器用于获取事件页面的协议(protocol)?像这样的东西:performance.navigation.protocol//e.g."HTTP/2"or"SPDY/3.1"or"HTTP/1.1"我知道可以检测协议(protocol)服务器端然后传递信息,但我正在寻找JS解决方案。(similarquestion包含损坏的链接且没有答案) 最佳答案 正在standardised作为performance.timing.nextHopProtocol,但chrome有一个non-standardimplementat

javascript - 与使用 eval 相比,包含 <script> 标签是否有性能提升?

我看到很多关于如何像这样动态添加代码的建议(source):varmyScript=document.createElement("script");myScript.setAttribute("type","text/javascript");myScript.innerHTML+='alert("Hello");';document.body.appendChild(myScript);相对于eval像这样eval('alert("Hello");');人们提示eval的性能下降和安全问题,但我无法想象如何添加标签会更快或更安全。编辑人们想知道为什么我要评估像alert("Hell

javascript - 为什么 CSS 动画和过渡会被 JavaScript 阻止?

更新2:在Chrome31.0.1650.34测试版中运行下面的JSFiddle不会导致所描述的行为,即它不会“在JavaScript启动时卡住”。我只能假设他们已经将CSS转换放置在与JavaScript和页面其余部分不同的线程上——好消息!卡住/阻塞转换仍然出现在Firefox25.0中。更新1:@IvanCastellanos提到CSS转换和动画在AndroidChrome上不会被阻止。这是非常有用的信息,部分地激发了这个问题。原始问题:对于浏览器vendor来说,这可能更像是一个问题,但这里有:到目前为止,我的印象来自thisvideo(和其他人)转换CSS不透明度不会真正受到