エラー、バグ、質問 - ページ 2873

 


EX5の読み込みに失敗
 

実行中の重大なエラー

struct pack(8) A {
typedef void (*fn)();
        fn f;
};
void OnStart() {}

結果:EX5の読み込みに失敗

 
A100:

構造のアライメントが実行速度に影響するのか?

 
fxsaber:

構造のアライメントは実行速度に影響するか?

ほとんどの場合、デフォルトのアライメントが最適であるため、アライメントについて心配 する必要はありません。しかし データ構造に対して カスタムアライメントを指定することで、 大幅な性能向上 やメモリ削減が実現できる場合もある」という。

 
A100:

ほとんどの場合、デフォルトのアライメントはすでに最適な状態になっているので、アライメントを気にする必要は ありません。しかし 場合によっては データ構造の カスタムアライメントを指定することで、 大幅な性能向上や メモリ削減を達成することができます。"

その一例をご紹介しましょう。

 
fxsaber:

そのような少なくとも一例です。

ドキュメントからの引用:「構造体フィールドのアライメントは、アライメントが適用されているサードパーティライブラリ(*.DLL)とデータを交換する 際に必要になることがあります。

すべてのパック値を測定し、速度を比較してみる

 
A100:

すべてのパックバリューをガンガン使って、速度を比較してみてください。

どのコードを測定するかを決める必要があります。

私の理解が正しければ、クラスアライメントは提供されません。つまり、クラスオブジェクトの 配列(ポインタではない)を扱う場合、クラスフィールドを整列構造に置き換えることが合理的である可能性は十分にあります。

とにかく、話題には困らない。

 
fxsaber:

私の理解が正しければ、クラスアライメントは 提供されません。すなわち、クラスオブジェクトの 配列(ポインタではない)を扱う場合、クラスフィールドを整列構造に置き換えることが合理的である可能性があります。

今、パッククラスを試してみました - サイズが変わる

 

マーケットからライブラリー(アドバイザーではない)を購入することについての質問です。

研究で図書館を使いたい。したがって、どのようなアカウントや端末でも動作するはずです。

Marketライブラリで可能ですか?

 
fxsaber:

少なくともその一例です。

今、データの最適化を行っている人は、せいぜいゲーム開発者くらいでしょうが、そこでも、すでに最適化された既製のゲームエンジンを誰もが持っています。

を検索してみましたが、具体的なお勧めがあれば、ここで検索してみますhttps://www.ibm.com/support/knowledgecenter/ru/

を検索しようとしましたが、動作しませんでした - クエリの多くのバリエーションがありますが、ここで主題に近いですhttps://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/cache_tlbs.html

構造パック」「構造性能」で検索してみました。



つまり、すべてのデータ型(long, int, short, char, double, float)から15個のフィールドを作り、データ型ごとにフィールドを混在させ、少なくともコンピュータワードの境界で pack 指令でこれらのフィールドを揃えられるようにしなければならない。

また、構造体をコピーして、関数にパラメータとして渡し、フィールドの内容を変更することも可能です


しかし、このようなデータ(構造体の配列)の合計サイズが少なくとも数メガバイトあり、プロセッサのキャッシュを可能な限り埋めることができれば、その違いは明らかでしょう。