Tag: 性能

Github应该用作JavaScript库的CDN吗?

从CDN服务JavaScript库而不是自己的服务器具有巨大的优势。 为您的服务器减less工作量,CDN可能比您的服务器拥有更接近用户的副本,但最重要的是,您的用户的浏览器已经从该URLcaching了这个可能性。 最后一个对每个人来说意味着更less的总体工作,所以显然这是一个全面的胜利,而且我们(开发人员)更依赖CDN服务我们的JavaScript的可能性更大。 但stream行的JavaScript CDN(Google,Microsoft等)只能托pipeless量文件。 对于其他我们可以select自己托pipe它们,或者…使用源控制服务器作为一种CDN。 不太可能Github或类似的地理分布caching文件优化全球服务。 但是,如果这是常见的做法,那么用户的浏览器就有一个很好的caching机会。 从我们的服务器卸载到github的工作只有在Github愿意自愿的情况下才有效。 那么这是常见的做法吗? 我们是否应该鼓励对方这样做? Github介意吗? 他们是否有官方的政策?

在Java中是否有任何性能原因来声明方法参数?

在Java中是否有任何性能原因来声明方法参数? 如: public void foo(int bar) { … } 与: public void foo(final int bar) { … } 假设bar只读,并且从不在foo()修改。

内部连接的性能与交叉连接相比

发出内部连接的效果与在WHERE子句中声明连接条件的交叉连接相同。 我注意到我公司的很多人使用交叉连接,我将使用内部连接。 在改变这些查询之后,我没有注意到任何显着的性能增益,并且想知道是否只是巧合,或者DBMS是否透明地优化了这些问题(在我们的例子中是MySql)。 这里有一个讨论的具体例子: SELECT User.* FROM User, Address WHERE User.addressId = Address.id; SELECT User.* FROM User INNER JOIN Address ON (User.addressId = Address.id);

matrix乘法:matrix大小差异小,时序差异大

我有一个matrix乘法代码,看起来像这样: for(i = 0; i < dimension; i++) for(j = 0; j < dimension; j++) for(k = 0; k < dimension; k++) C[dimension*i+j] += A[dimension*i+k] * B[dimension*k+j]; 这里,matrix的大小由dimension表示。 现在,如果matrix的大小是2000,运行这段代码需要147秒,而如果matrix的大小是2048,则需要447秒。 所以虽然没有区别 (2048 * 2048 * 2048)/(2000 * 2000 * 2000)= 1.073,时间差为447/147 = 3。有人可以解释为什么会发生这种情况吗? 我预计它会线性扩展,这是不会发生的。 我不是想做出最快的matrix乘法代码,只是想明白为什么会发生。 规格:AMD Opteron双核心节点(2.2GHz),2G RAM,gcc v 4.5.0 程序编译为gcc -O3 simple.c 我已经在Intel的icc编译器上运行了这个,并且看到了类似的结果。 编辑: 正如评论/答案中所build议的那样,我运行了维度= […]

清除文件caching以重复性能testing

我可以使用哪些工具或技术来删除caching的文件内容,以防止我的performance结果偏斜? 我相信我需要完全清除,或者select性地删除有关文件和目录内容的caching信息。 我正在开发的应用程序是一个专门的压缩实用程序,并且需要做大量的工作来读写操作系统最近未触及的文件,而且其磁盘块不太可能被caching。 我希望消除我在IO时间看到的变化性,当我重复分析执行文件处理工作的不同策略的任务时。 我主要感兴趣的是Windows XP的解决scheme,因为这是我的主要开发机器,但我也可以使用Linux进行testing,所以也对这个环境的答案感兴趣。 我尝试了SysInternals CacheSet ,但是在重新读取我刚刚读过的文件的时候,单击“清除”并不会导致可测量的增加(在冷启动后恢复到正时)。

而(1)比。 for(;;)有速度差吗?

长版… while (1)在Perl脚本中使用while (1) for (;;)的速度更快,这for (;;)一名同事今天声称的。 我认为他们应该也是希望翻译能够优化任何差异。 我build立了一个循环迭代运行10亿次的脚本,以及相同数量的while循环,并logging它们之间的时间。 我无法find可观的区别。 我的同事说,一位教授告诉他, while (1)正在做一个比较1 == 1 , for (;;)不是。 我们使用C ++重复了100次的迭代次数,差异可以忽略不计。 然而,这是一个graphics化的例子,说明编译代码与脚本语言相比有多快。 短版… 如果你需要一个无限循环来打破,那么有没有什么理由更喜欢while (1)一个for (;;) ? 注意:如果问题不清楚。 这纯粹是几个朋友之间有趣的学术讨论。 我意识到这不是一个所有程序员都应该为之苦恼的超级重要的概念。 感谢所有伟大的答案(我确信其他人)从这个讨论中学到了一些东西。 更新:上面提到的同事在下面回答了一个答案。 引用这里,以防被埋葬。 它来自AMD程序员。 他表示,C程序员(人员)没有意识到他们的代码效率低下。 他今天说,海湾合作委员会的编译器是非常好的,并把像他这样的人停业。 他举例说,并且告诉了我关于while 1 vs for(;;) 。 我现在习惯使用它,但gcc,特别是解释器,现在都做同样的操作(处理器跳转),因为它们被优化了。

ByteBuffer.allocate()与ByteBuffer.allocateDirect()

要allocate()或allocateDirect() ,这是问题。 多年以来,我只是坚持这样一种想法,即由于DirectByteBuffer是在操作系统级别的直接内存映射,它比HeapByteBuffer更快地执行get / put调用。 直到现在,我从来没有真正有兴趣find有关情况的确切细节。 我想知道两种types的ByteBuffer的哪一种更快,以及在什么条件下。

如何testingAndroid应用程序的性能?

我如何testingAndroid应用程序的性能? Android提供的支持是什么,我该如何使用它?

在JavaScript中将数字转换为string的最佳方法是什么?

将数字转换为string(就速度优势,清晰度优势,内存优势等而言)是什么“最佳”方式? 一些例子: String(n) n.toString() ""+n n+""

对象/数组在JavaScript中的性能是什么? (专门针对Google V8)

与JavaScript中的数组和对象(尤其是Google V8)相关的性能将会非常有趣。 我在互联网上的任何地方找不到关于这个主题的综合性文章 我知道有些对象使用类作为其基础数据结构。 如果有很多属性,它有时被视为一个哈希表? 我也明白,数组有时被视为C ++数组(即快速随机索引,缓慢删除和resize)。 而且,其他时候,它们更像对象(快速索引,快速插入/删除,更多内存)。 而且,也许有时它们被存储为链接列表(即,慢速随机索引,在开始/结束时快速移除/插入) Array / Object的检索和操作在JavaScript中的精确性能是什么? (专门针对Google V8) 更具体地说,它对性能的影响如下: 将属性添加到对象 从对象中删除一个属性 索引对象中的属性 将项目添加到数组 从arrays中删除项目 索引数组中的项目 调用Array.pop() 调用Array.push() 调用Array.shift() 调用Array.unshift() 调用Array.slice() 任何文章或链接的更多细节,也将受到赞赏。 🙂 编辑:我真的很想知道JavaScript数组和对象如何在引擎盖下工作。 另外,在什么情况下 V8引擎“知道”切换到另一个数据结构? 例如,假设我创build一个数组… var arr = []; arr[10000000] = 20; arr.push(21); 这里究竟发生了什么? 或者…这个怎么样? var arr = []; //Add lots of items for(var i = 0; i […]