1

約1176^3の位置のリストがあります。のようなsmthを作る

val x = list.length

何時間もかかります..

リストにある場合、1271256の位置は問題ありません、ほんの数秒です。誰かがそれをスピードアップする方法を知っていますか?

4

2 に答える 2

9

ListO(n) であるため、長さ演算のデータ構造が間違っている可能性があります。リストが長いほど、完了するのに時間がかかります。

Vectorlengthは、そのストレージが有限時間でのランダム アクセスをサポートするため、呼び出す必要がある場合に使用するより良いデータ構造である可能性があります。

もちろん、これは List が使用するのに不適切な構造であることを意味するものではありません。

于 2013-01-10T13:42:23.460 に答える
1

gpamparaの答えに追加すると、これらのような場合、実際には配列を使用して正当化できる場合があります。これは、格納されたアイテムごとのオーバーヘッドが最も低く、要素への O(1) アクセスと長さの決定 (配列ヘッダー自体に記録されているため) )。

配列には多くの欠点がありますが、メモリのオーバーヘッドが主な考慮事項である場合 (および、作成時にサイズがわかっている固定サイズのコレクションが実行可能な場合) には正当であると考えています。

于 2013-01-10T15:34:47.340 に答える