0

たとえば、OGRE3Dは文字列を使用してオブジェクトを識別します。そのため、コードがその名前(文字列)を使用してオブジェクトに対して何かを実行するたびに、文字列操作を実行する必要があります。3Dエンジンは速度に非常に敏感であるため、どのようにしてそれを行うのに良い方法ですか?

コンピュータが文字列に対して操作を実行する必要がある場合、バイトごとに順番に操作を実行するため、文字列が長い場合はCPUサイクルが長くなります...

文字列識別子を使用する代わりに、コードでプレーン変数名を使用する方が速いのではないでしょうか。

4

2 に答える 2

3

はい、文字列識別子を使用する代わりに、コードで単純な変数名を使用する方が高速です。しかし、ビルド時にそれらの名前がわからない場合があります。次に、名前を動的に処理する方法が必要です。別のアプローチは、文字列の代わりにプリミティブ整数を使用することです。整数値は、文字列のハッシュまたはルックアップ テーブルを使用して生成される可能性があります。しかし、文字列を使用しても、非常に長い文字列がたくさんあり、すべてが同じ開始文字を持ち、最後にいくつかの異なる文字しかない場合を除き、プログラムの速度が大幅に低下することはありません。通常、文字列を比較すると、比較的早い段階で偽の結果が得られるはずであり、「真の一致」の場合にのみ、2 つの文字列を完全に比較する必要があります。でも、

于 2010-10-25T15:49:32.813 に答える
0

さて、私は先生から答えを得ました:

実際、このように順番に挿入されたマップに文字列識別子が入ると、二分検索ですぐに見つかります。

于 2010-12-04T13:45:18.107 に答える