リンクリスト構造に大きなバッファが割り当てられているため、ノードは連続したメモリブロックにあります。私はリンクリストを反復処理しようとすると、2つの方法が以下のようにさまざまなパフォーマンスにつながる :なぜp ++はp = p->よりもはるかに高速です
while(index<ListCount) {
if (first[index++].key == key) { return;}
}
別の方法がある:
while(first) {
if (first->key == key) { return; }
first = first->next;
}
性能が異なる大があり、第二の方法は、遠く離れています最初のやり方の後ろで、なぜこれが起こったのですか?
各ノードには、次のポインタを含む16バイトの変数が含まれています。
コンテキストが不十分です。あなたは最適化していますか?あなたはどのような構造でインデックスを作成していますか?その他 – ChrisCM
が問題を修正しました。これは私が使用する実際のループです – user3126461
なぜコードは数秒ごとに変化し続けますか?実際にどのバージョンのパフォーマンスをテストしましたか?私はあなたのパフォーマンス結果が作られていると確信しています。テストしたコードは、あなたが投稿したコードではありません。最初のバージョンはもう少し速くなるはずですが、大きな違いはありません。 – AnT