私はパフォーマンスやメモリ使用量を改善するつもりはありません。この質問は純粋に好奇心から生まれました。
主な質問
次のクラスが与えられた場合、C#コンパイラ(Mono + .NET)は2つのshort
変数を4バイトにパックしますか、それとも8バイトを消費しますか(アライメントあり)?
public class SomeClass {
short a;
short b;
}
二次質問
上記の質問に対する答えが4バイトではなかった場合、次の代替案は何らかの利点を提供しますか(SomeClass
非常に大量に使用される場合)。
// Warning, my bit math might not be entirely accurate!
public class SomeClass {
private int _ab;
public short a {
get { return _ab & 0x00ff; }
set { _ab |= value & 0x00ff;
}
public short b {
get { return _ab >> 8; }
set { _ab |= value << 8; }
}
}