大佬教程收集整理的这篇文章主要介绍了node.js – 为什么nodejs数组移位/推送循环比数组长度87369慢1000倍?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
试试这个,首先是q中的87369个元素,然后是87370.(或者,在64位系统上,尝试85983和85984.)对我来说,前者运行时间为.05秒;后者,在80秒内 – 慢1600倍. (在节点v0.10.29的32位debian linux上观察到)
q = []; // preload the queue with some data for (i=0; i<87369; i++) q.push({}); // fetch oldest waiTing item and push new item for (i=0; i<100000; i++) { q.shift(); q.push({}); if (i%10000 === 0) process.stdout.write("."); }
64位debian linux v0.10.29从85984开始爬行并以.06 / 56秒运行.节点v0.11.13具有类似的断点,但是具有不同的数组大小.
空阵列以4个插槽开始,当您继续推动时,它将使用公式1.5 *(旧长度1)16调整阵列大小.
var j = 4; while (j < 87369) { j = (j + 1) + Math.floor(j / 2) + 16 console.log(j); }
打印:
23 51 93 156 251 393 606 926 1406 2126 3206 4826 7256 10901 16368 24569 36870 55322 83000 124517
所以你的数组大小最终实际上是124517项,这使得它太大了.
您实际上可以将阵列预分配到正确的大小,它应该能够再次快速移动:
var q = new Array(87369); // Fits in a page so fast shift is possible // preload the queue with some data for (i=0; i<87369; i++) q[i] = {};
如果您需要大于此值,请使用the right data structure
以上是大佬教程为你收集整理的node.js – 为什么nodejs数组移位/推送循环比数组长度87369慢1000倍?全部内容,希望文章能够帮你解决node.js – 为什么nodejs数组移位/推送循环比数组长度87369慢1000倍?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。