JavaScriptの配列.lengthの時間の複雑さは何ですか?私はプロパティがすべての配列に自動的に設定されているように見えるので、それは一定であると思います。javascriptの長さの複雑さ.length
答えて
これはプロパティが自動的にすべての配列に設定されているように見えるので、あなたはそれを探しているだけなのでしょうか?
右。 おそらく。それは格納されている(計算されていない)プロパティで、必要に応じて自動的に更新されます。
言わせていただいたように、は、JavaScriptエンジンは、仕様書に記載されているものとの乖離を見ることができなければ、カバーの下で好きなことを自由に行うことができます。仕様が時間の複雑さについて何も言わないからlength
...
JavaScriptの標準配列は理論的にはちょうどobjects with special behaviorであることに注意してください。理論的にはのJavaScriptオブジェクトはプロパティバッグです。プロパティバッグのプロパティを調べることは、オブジェクトがある種の名前 - >値ハッシュマップとして実装されている場合、理論上、他にいくつのプロパティが存在するかによって決まります(そして、以前は悪い昔)。現代のエンジンはオブジェクトを最適化します(ChromeのV8はダイナミックなクラスを作成してコンパイルすることは有名ですが)。そのオブジェクトに対する操作はプロパティの検索パフォーマンスを変更する可能性があります。プロパティを追加すると、V8でサブクラスを作成することができます。プロパティ(実際にはdelete
を使用)を削除すると、V8が手を捨てて「辞書モード」に戻り、オブジェクトへのプロパティアクセスが大幅に低下します。
言い換えれば、それは、エンジンとエンジンとの間で変化することがあります。しかし、配列を純粋に配列として使用する場合(配列以外のプロパティを格納しない場合)、定時検索が可能です。
ボトルネックのようには思えませんが、確かに使用したい場合はvar len = arr.length
をチェックしてください。私のマシンでは、大きな違いはありませんが、傷つくことはなく、少し速いと思われます。
var arr = [];
for (var i = 0; i < 1000000; i++) {
arr[i] = Math.random();
}
var start = new Date();
for (var i = 0; i < arr.length; i++) {
arr[i] = Math.random();
}
var time1 = new Date() - start;
var start = new Date();
for (var i = 0, len = arr.length; i < len; i++) {
arr[i] = Math.random();
}
var time2 = new Date() - start;
document.getElementById("output").innerHTML = ".length: " + time1 + "<br/>\nvar len: " + time2;
<div id="output"></div>
- 1. JavaScriptのキャンバスの複雑さ
- 2. javascript node.jsの複雑さ?
- 3. JavaScriptの長さの長さ
- 4. サブタスクの既知の複雑さを伴うアルゴリズムの複雑さ
- 5. フラッドスペースの複雑さ
- 6. minmax_elementの複雑さ
- 7. コードフラグメントの複雑さ
- 8. マルチステージグラフの複雑さ
- 9. バイナリツリートラバーサルの複雑さ
- 10. コンパニオンマトリックスの複雑さ
- 11. バブルソートの複雑さ
- 12. ハッシュテーブルの複雑さ
- 13. アルゴリズムの複雑さ
- 14. バルーンソートの複雑さ
- 15. ソートアルゴリズムの複雑さ
- 16. クエリの複雑さとコードの複雑さ
- 17. 時間の複雑さと空間の複雑さ、空間の複雑さの計算方法
- 18. JavaScriptのプラグイン機能の複雑さと機能の長さに関する誤検出
- 19. 長編の複雑さは何ですか?
- 20. 特定の長さを持つ複雑な正規表現パターン
- 21. HashSetのルックアップの複雑さ?
- 22. Pythonのパーサーの複雑さ
- 23. このトリプルループの複雑さ?
- 24. Pythonのバブルソートの複雑さ
- 25. Content-LengthからBytesIOまでの長さの場合のHPE_UNEXPECTED_CONTENT_LENGTHエラー
- 26. forループの複雑さのための複雑さのための複雑さのための時間複雑度
- 27. 複雑さの計算
- 28. Dijkstraのアルゴリズム - 複雑さ
- 29. JQueryサイクルの複雑さ
- 30. 時間の複雑さと
私は可能性がある場合は、なぜ懸念のオブジェクトプロパティの時間複雑性はありますか?そう、最小限のようですか? –