为什么使用 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 框架 v4.7)中产生以下指标;
double.Parse()
和 cast 的累计 CPU 使用率为 37.84%,而 decimal.Parse()
为 46.93%。那里的差异比可以轻易归结为数据类型大小的差异要多。谁能解释一下?
分析器上出现此问题的应用程序需要 10 天以上的时间才能运行,因此这个微小的差异相当于几个小时的运行时间。最好理解为什么。我可以看到 decimal.Parse()
调用了 oleaut32.dll
但是......有什么?
最佳答案
来自 double's implementation 的来源和 decimal's implementation看起来 decimal.Parse()
处理原位精度,而 double.Parse()
被优化为尽可能多地处理整数。
关于c# - 为什么 decimal.Parse() 比 (decimal)double.Parse() 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48232967/