我在柜台上使用原子操作,我关心性能。我知道,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