私は10個の要素のアレイとブール変数の16個の* 16 * 256箱でチャンクを作成する簡単なコードを、持っています。メソッドtickは配列要素を増やし、チャンク内の各ボックスのブール値を100回変更します。は、Google Chromeのよりもはるかに遅いのですか?
のWindows x64のは7.4.0のNode.js:
1目盛り:102.85
合計時間(100):10285
Google Chromeを、私は結果を持っている時間を測定することにより
1ティック:18.08
合計時間(100):1808
さえ、根本的なスニペットが速くノードよりも桁違いです。
スニペット:
1目盛り:22.79
合計時間(100):2279
だから、どのように私は、ノードが高速に動作することができますか?アレイのプレ充填
(function(){
\t class Box {
\t \t constructor() {
\t \t \t this.data = new Array(10);
\t \t \t this.state = false;
\t \t }
\t \t tick() {
\t \t \t this.state = !this.state;
\t \t \t for(let i = 0; i < this.data.length; i++) {
\t \t \t \t this.data[i]++;
\t \t \t }
\t \t }
\t }
\t class Chunk {
\t \t constructor() {
\t \t \t this.data = new Array(256);
\t \t \t for(let z = 0; z < this.data.length; z++) {
\t \t \t \t this.data[z] = new Array(16);
\t \t \t \t for(let x = 0; x < this.data[z].length; x++) {
\t \t \t \t \t this.data[z][x] = new Array(16);
\t \t \t \t \t for(let y = 0; y < this.data[z][x].length; y++) {
\t \t \t \t \t \t this.data[z][x][y] = new Box();
\t \t \t \t \t }
\t \t \t \t }
\t \t \t }
\t \t }
\t \t tick() {
\t \t \t for(let z = 0; z < this.data.length; z++) {
\t \t \t \t for(let x = 0; x < this.data[z].length; x++) {
\t \t \t \t \t for(let y = 0; y < this.data[z][x].length; y++) {
\t \t \t \t \t \t this.data[z][x][y].tick();
\t \t \t \t \t }
\t \t \t \t }
\t \t \t }
\t \t }
\t }
\t var c = new Chunk();
\t var count = 100;
\t var start = new Date().getTime();
\t for(let i = 0; i < count; i++) {
\t \t c.tick();
\t }
\t var end = new Date().getTime();
\t console.log("1 tick: " + (end - start)/count);
\t console.log("Total time(" + count + "): " + (end - start));
})();
Chromeは通常、リリースごとに頻繁にV8を更新します。どのバージョンのノードですか?ポスト – dandavis
追加版もChromeをスピードアップしますが、彼らは今、ほぼ等しいです!ミックスタイプの配列(ヌルと数値)をアンボックスするのはなぜノードでもっと痛いのですか? – jDek