2

サーバープラットフォームとしてnode.jsを使用しており、65,000アイテムの非スパース配列を処理する必要があります。

Javascript配列は真の配列ではありませんが、実際にはハッシュです。インデックスへのアクセスには、インデックスから文字列への変換とハッシュルックアップの実行が伴います。( http://www.crockford.com/javascript/survey.htmlの「アレイ」セクションを参照して ください)。

だから、私の質問はこれです。node.jsは実際の配列を実装していますか?アイテムのサイズ変更や削除に費用がかかりますが、index-to-string-then-hash-lookupを使用せずに真のランダムアクセスを使用しますか?

ありがとう。

編集

要求が多すぎるかもしれませんが、私の配列にはJavascriptオブジェクトが格納されています。数字ではありません。また、オブジェクトにはネストされたサブオブジェクトがあるため、それぞれが数値プリミティブまたは文字列を保持する多くの型付き配列に分割することはできません。型付き配列を使用しようとすると、コードが保守できなくなります。

EDIT2

私は何かが欠けているに違いありません。なぜそれはすべてかゼロでなければならないのですか?真の配列を持たない真のJavascript、またはJavascriptの利点を持たないCスタイルの拡張。Javascript(型指定されていない)オブジェクトの真の配列を持つことは、とにかくJavascriptの性質と矛盾しますか?JavaとC#List<Object>には、基本的に私が探しているものがあります。C#は。でさらに近くなりList<DynamicObject>ます。

4

4 に答える 4

8

Node.js にはJavascript 型付き配列があります: Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array.

彼らはあなたが求めているものだと思います。

于 2012-09-12T16:12:05.777 に答える
0

本質的ではありません。

ただし、専門知識のレベルによっては、Node の C/C++ 拡張機能を使用して「真の」配列拡張を作成することもできます。http://nodejs.org/api/addons.htmlを参照してください

于 2012-09-12T16:18:33.877 に答える
0

Node.js は、おそらくあなたが探しているBufferクラスを提供します。

ABufferは整数の配列に似ていますが、V8 ヒープ外の生のメモリ割り当てに対応しています。ABufferはサイズ変更できません。

于 2012-09-12T16:07:28.957 に答える
0

低レベル JavaScript (LLJS) を使用して、すべてを C スタイルで直接操作したいと考えています。

http://mbebenita.github.com/LLJS/

上記のリンクによると、LLJS 配列は、Javascript 配列ではなく、探している配列 (真の C に似た配列) に似ていることに注意してください。

Node.js には LLJS の実装が用意されているので、独自の node.js C 拡張機能を作成する必要はないかもしれません。おそらく、この実装でうまくいくでしょう: https://github.com/mbebenita/LLJS

于 2012-09-12T16:13:44.870 に答える