【问题标题】:Type conversion performance类型转换性能
【发布时间】:2014-11-13 23:00:02
【问题描述】:

两种转换的执行时间相同还是不同?.net 是如何进行转换的

float j = r;
decimal e = Convert.ToDecimal(j);in convert class using todecimal method is converting to decimal
decimal tt=(decimal)j;// How does this work in casting (Exactly How boxing and unboxing works) 

【问题讨论】:

  • 为什么不自己测量呢?
  • 默认答案:“如果你有两匹马,你想知道哪两匹马跑得更快,那就和你的马赛跑吧。”ericlippert.com/2012/12/17/performance-rant
  • 我看到语法上的唯一区别@SonerGönül
  • 如果你分解Convert.ToDecimal(float value),则源是return (decimal)value;
  • 对不起,但对我来说这个问题很愚蠢-1!

标签: c# types type-conversion


【解决方案1】:

没有区别,因为System.Convert.ToDecimal(Single) 使用的代码与您看到的here 完全相同。

public static decimal ToDecimal(float value) {
    return (decimal)value;
}

但一般情况下,您应该先自己测量。这是E. Lippert 会说的:

“如果你有两匹马,并且你想知道这两匹马中哪一个跑得更快,那就让你的马赛跑吧。”

【讨论】:

    【解决方案2】:

    如果您查看它们的调用堆栈,您会看到。

    decimal tt=(decimal)j;
    

    比函数调用少 1 个。

    decimal e = Convert.ToDecimal(j);
    

    由于我之前的人在那里回答的原因(我会将此放在评论中,但我没有 50 个代表,所以我不能)。

    非常轻微

    decimal tt=(decimal)j;
    

    更快。

    【讨论】:

    • 这是“最佳”的微优化,您很少会注意到显着差异。这是一个证明它的小检查:ideone.com/yzJyAf
    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-08
    • 2011-09-16
    • 1970-01-01
    相关资源
    最近更新 更多