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

Dis*_*nky 4 .net c# parsing

为什么解析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);
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Sco*_*ain 5

double的实现源和十进制的实现开始,看起来decimal.Parse()处理具有原位精度,而double.Parse()优化是为了尽可能多地完成整数.