10

なぜ彼らはこれをしたのですか:

Sys_SetPhysicalWorkMemory( 192 << 20, 1024 << 20 );   //Min = 201,326,592  Max = 1,073,741,824

これの代わりに:

Sys_SetPhysicalWorkMemory( 201326592, 1073741824 );

コードを取得した記事

4

4 に答える 4

25

優れた特性は、値をシフトすること<< 10は、1024 (1 KiB) を掛けることと同じであり、<< 201024*1024 (1 MiB) であるということです。

連続する 10 のべき乗でシフトすると、コンピューター ストレージの標準単位がすべて得られます。

したがって、その関数はその引数を192 MB (最小) および 1024 MB (最大) として表現しています。Sys_SetPhysicalWorkMemory(int minBytes, int maxBytes)

于 2013-01-15T04:37:52.230 に答える
12

Self commenting code:

192 << 20 means 192 * 2^20 = 192 * 2^10 * 2^10 = 192 * 1024 * 1024 = 192 MByte

1024 << 20 means 1024 * 2^20 = 1 GByte

Computations on constants are optimized away so nothing is lost.

于 2013-01-15T04:40:34.843 に答える
2

私は間違っているかもしれません (ソースを調べていませんでした) が、読みやすさの理由だけだと思います。

于 2013-01-15T04:37:48.220 に答える
1

ポイントは(まだ言及されていない)ということだと思います

最も基本的なコンパイラを除くすべてのコンパイラは、コンパイル時にシフトを行います。定数式で演算子を使用するときはいつでも、コンパイラはコードが生成される前にこれを行うことができます。constexpr および C++11 より前では、これは関数に拡張されていないことに注意してください。

于 2013-01-15T10:09:37.090 に答える