简单的问题:使用较浅的对象比使用较深的对象有好处吗?当我写代码时,我倾向于使用深层对象,以便于理解和分类。但我想知道这种习惯是否让我的代码变慢了。我做了一个测试,但我不知道我是否做对了。//buildingnecessaryobjectsvara={};varb;b=a;for(vari=0;i结果(毫秒):shallow32293304324632533277deep33753343324731933248深层对象的测试时间并不慢,但有时甚至比浅层对象更快。尽管结果如此,但我没有足够的信心断定它们是相同的速度。这两者有什么区别吗? 最佳答案
不确定这是否是一个新问题,所以如果您有任何好的来源,请引用。我的团队正在开发一个大型JS图表项目,我们从以前的开发人员那里继承了这些项目,他们大量使用内置对象原型(prototype)来添加可重用代码。我们向Date、Object和其他内部对象添加了很多新的实用函数,所以我猜他们这样做是因为改变原型(prototype)提供了更直观的API。另一方面,我们的组件存在性能/内存问题,我们应用了所有可能的优化和最佳实践。我找不到关于API设计的。我正在尝试弄清楚是否更好地将内置对象的原型(prototype)与库代码结合起来,而不是通过某种命名空间模式将它们组合到专用对象中。问题是哪种设计
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我的网页使用了几个javascript库,如jquery、jquery-ui、underscore、backbone和其他一些著名的jquery插件。现在我面临两难境地,我可以:使用托管所有这些库的公共(public)CDN。如果用户使用相同的CDN访问过另一个站点,则脚本可能已被缓存。但是由于每个库都是独立的,页面需要包含很多脚本标签,因此会有很多http请求。将所有必需的脚本合并为一个
我已经构建了一个大型的AngularJS应用程序,到目前为止它运行良好。当一些用户(使用具有一个CPU的非常老的计算机)提示应用程序非常慢时,我的问题就开始了。我打开了任务管理器,我可以看到该选项卡始终显示在70%-100%CPU(使用单核CPU时)。现在,由于这在更强大的计算机上运行良好,我不确定我有性能问题,如果有,我真的不知道如何检查(我无法使用chrome上的性能工具检查).有什么办法可以解决这个问题吗?告诉Angular执行它的摘要循环更少次?有没有人遇到过类似的问题?任何提示对我来说都很棒。 最佳答案 我从未见过减少循环
chrome内存配置文件中的堆大小是否有任何限制? 最佳答案 注意:这是一个仅限Chrome的答案,请参阅下面的原因。你应该看看Chrome开发工具中的window.performance.memory,有一个jsHeapSizeLimit属性。但是,我不确定这将是任何内存分析y轴上的最大值您可以在MDN上找到更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Window/performanceperformance.memory:Anon-standardextension
我经常在函数中使用可选参数,但一些测试显示它们在firefox和safari中的性能受到巨大影响(70-95%)。奇怪的是,如果我传入字面值undefined那么就没有惩罚。这里会发生什么?我不会认为这是一个作用域链问题,因为它们本质上是函数的本地问题。我要开始将undefined传递给每个可选参数吗?jsPerf:http://jsperf.com/function-undefined-args/2 最佳答案 对于这样的函数:functionthreeArgs(x,y,z){returnx+y+z;}这样调用:threeArgs(
我正在涉足进程间通信;目的是让工作进程执行一些计算并将结果传回控制进程。我安装了zeromq.node并在coffeescript中设置一个简单的请求者和响应者。请求者:#requester.coffeezmq=require'zmq'context=newzmq.Context()socket=zmq.socket'req'socket.bind'tcp://127.0.0.1:5555',(error)=>throwerroriferror?console.log'Requestingwriterboundtoport5555'setInterval(->socket.send'h
我的应用程序遇到了一个非常奇怪的行为-如果我启动探查器(必须是JS探查器),代码的运行速度几乎是原来的两倍。我用一个非常简单的代码复制了它,可以在这个fiddle上找到它:https://jsfiddle.net/zagrwk44/问题是,这只能在配备旧显卡的机器上重现。我设法在装有AMDRadeonHD6450显卡的机器上重现了它。在较新的机器上,这不再重现。分析器如何使代码运行得更快?几乎是两倍的速度!这里花时间的代码只是改变屏幕上一个div的位置:for(vari=0;i我使用console.profile和console.profileEnd通过javascript启动和停止分
因此,我正在编写2dJavascript物理模拟程序。性能很好,但我正在通过优化使其变得更好。因此,因为该程序涉及大量物理几何,所以我在程序中进行了几个勾股定理计算。总共大约有五次计算;它们一起运行大约每秒一百万次。所以,我想如果我把那个简单的勾股定理代码放到一个新函数中并调用它,它会提高性能;毕竟,这样浏览器就可以减少编译工作。因此,我在Firefox中运行代码并得到...该计算的执行时间增加4000000%。如何?这是相同的代码:Math.sqrt(x*x+y*y),那么将它作为函数添加是如何减慢速度的呢?我认为原因是一个函数需要时间来调用,而不是执行代码,并且每秒增加一百万个这样
今天我有一个理论问题。为什么scroll事件不冒泡?它与性能问题有关吗?我做了一些挖掘,但遗憾的是没有找到任何能满足我好奇心的答案。感谢您的回复:) 最佳答案 它会冒泡但不会在元素上冒泡。它在文档对象上冒泡,直到document.defaultView(文档的窗口)。这种行为是为了避免性能问题(滚动事件可以高速触发)。如果您想了解有关滚动的更多信息,我建议您阅读W3文档:https://www.w3.org/TR/cssom-view/#scrolling希望对你有帮助。 关于javas