繁体   English   中英

为什么decimal.Parse()慢于(decimal)double.Parse()?

[英]Why is decimal.Parse() slower than (decimal)double.Parse()?

为什么用double.Parse()解析并double.Parse()decimal而不是调用decimal.Parse()

鉴于以下内容;

string stringNumber = "18.34";

double dResult = 0d;
decimal mResult = 0m;
for (int i = 0; i < 9999999; i++)
{
    mResult = (decimal)double.Parse(stringNumber);
    mResult = decimal.Parse(stringNumber);
}

在VS2017分析器(.NET framework v4.7)中得出以下度量标准; 性能指标

累计的double.Parse()double.Parse()转换占CPU使用率的37.84% decimal.Parse()占CPU的46.93%。 这里有更多不同之处,可以很容易地归结为数据类型大小的差异。 谁能解释一下?

在探查器上出现的应用程序需要10天以上才能运行,因此这个小差异相当于运行时间。 理解为什么会很好。 我可以看到decimal.Parse()调用oleaut32.dll但是......是吗?

double的实现源和十进制的实现开始 ,看起来decimal.Parse()处理原位精度,而double.Parse()被优化以尽可能多地处理整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM