【发布时间】:2014-07-10 20:40:57
【问题描述】:
我正在尝试构造这样的数组(矩阵):
var arr = [];
var matrix_size = 100000;
var start_time = Math.round(new Date().getTime()) / 1000.0;
for( var i = 0; i < matrix_size ; i++ ) {
var row = [];
for( var j = 0; j < matrix_size; j++ ) {
row.push( 0 );
}
arr.push( row );
if ( counter % 10 == 0 ) {
var stop_time = Math.round(new Date().getTime()) / 1000.0;
var speed_time = stop_time - start_time;
var speed = i / speed_time; // m / s
var remain = matrix_size - i;
var remain_time = remain / speed;
console.log("Ready: " + i + " rows; remain: " + remain + "; speed: " + speed + "; remain_time: " + remain_time + "s.");
}
}
var stop_time = Math.round(new Date().getTime()) / 1000.0;
var speed_time = stop_time - start_time;
console.log( "Time: " + speed_time + " s. ");
- matrix_size 1000 - 0.1700000762939453 秒
- matrix_size 10000 - 8.978000164031982 秒
- matrix_size 100000 - 卡住了
Ready: 1020 rows; remain: 98980; speed: 40.255742648097055; remain_time: 2458.7796296605875s.
真的有这么大吗?在这种情况下,浏览器功能的正确数学是什么?
实际上,我需要 500,000 x 500,000 的数组。不仅仅是零,而是真正的浮点值。在这种情况下我需要使用服务器端吗?
【问题讨论】:
-
Javascript 是一种解释性语言,这意味着它很慢。
-
500K * 500K = 2500 亿。即使假设您可以在处理器上每赫兹执行 1 件事,那也应该是非常长的时间。
-
不只是时间,还有内存,2500 亿 x 64 位
-
@user299448 你在做什么需要这么大的矩阵?数据库不够用吗?
-
我不知道您要做什么或为什么,但我建议您查看某种GPGPU。如果您需要在浏览器中执行此操作,WebGL 将是您的最佳选择(虽然我没有很多经验,所以我不确定它是否能满足您的需要)。
标签: javascript arrays performance