This问题给十进制求和运算带来了一个优化点。但是,在十进制类型实现中,整个求和操作被推迟到外部函数:
[MethodImplAttribute(MethodImplOptions.InternalCall)]
private static extern void FCallAdd(ref Decimal result, Decimal d1, Decimal d2);这意味着此方法是在CLR本身中实现的。现在ecall.cpp有了一个引用
FCFuncElement("FCallAdd", COMDecimal::DoAdd)调用comdecimal.cpp函数
STDAPI DecAddSub(LPDECIMAL pdecL, LPDECIMAL pdecR, LPDECIMAL pdecRes, char bSign)更新
根据下面的注释,优化发生在编译器本身。因此,我正在重新表述这个问题。有人能指出在哪里可以获得有关这些优化的信息吗?
发布于 2011-06-29 17:23:08
您链接到的问题中的优化不是在这个调用中执行的,而是由编译器完成的。编译器“知道”向decimal添加0.00m不会有任何作用,所以它生成的IL根本不包括decimal添加。换句话说,FCallAdd从未被调用过。
https://stackoverflow.com/questions/6524678
复制相似问题