gpt4 book ai didi

c# - 为什么 decimal.Parse() 比 (decimal)double.Parse() 慢?

转载 作者:太空狗 更新时间:2023-10-30 01:00:14 24 4
gpt4 key购买 nike

为什么使用 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)中产生以下指标; Performance metrics

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com