我在櫃檯上使用原子操作,我關心性能。我知道,64位平臺遞增long
可以一次性完成,對代替它需要在32位平臺上的兩個指令C#:是否有任何標準的編譯標誌,允許我檢測是否編譯爲x86或x64?
我有這樣的代碼片段
#if X64
using COUNTER_TYPE = System.Int64;
#else
using COUNTER_TYPE = System.Int32;
#endif
但我沒有定義X64在我的項目配置中不變。我想知道是否有一種方法可以通過#if語句來確定是否編譯x64。當我實現一個循環隊列時,我想在x86上運行它的大小高達40億個元素,但是我可能會感激在x64上將其大小解鎖爲long.MaxValue
。我知道,在現代處理器上,一條或兩條指令並不真正關心,但我仍然很想知道是否可以通過代碼檢測配置,而無需使用指定的常量重新定義x64配置文件。
謝謝。
這需要首先進行健全性檢查。嘗試在x86上實際填充40億個項目的循環隊列。現在在x64上再次嘗試。 – 2010-10-29 18:08:51