小编stf*_*tfx的帖子

.NET实现:Math.Min中的双重转换(float,float)

为什么.Net实现了Math.Min(float,float)函数,如下所示:

public static float Min(float val1, float val2)
{
  if ((double) val1 < (double) val2 || float.IsNaN(val1))
    return val1;
  else
    return val2;
}
Run Code Online (Sandbox Code Playgroud)

虽然我可以看到使用IsNaN我不明白为什么他们在比较值时会转换为double.这不比简单写作慢val < val 2吗?特别是如果我想用它来将数字钳位到数字而没有像0f或那样精确1f.

我是否应该继续实施一个自定义数学库,另外还需要具有非NaN值以获得最佳性能,还是浪费时间?

public static float Min(float a, float b)
{
    return a < b ? a : b;
}
Run Code Online (Sandbox Code Playgroud)

.net math double reflector type-conversion

4
推荐指数
1
解决办法
228
查看次数

.NET const影响编译的程序集大小

为什么const在编译时它们的值被替换为值,但是仍然包含在汇编中?至少这是IL DASM和Reflector所展示的.

目前我const用于定义许多幻数和字符串,以便更容易地更改代码而不影响运行时性能.

现在我知道这不会影响已用内存,但它仍会影响编译的程序集大小,这对于手机应用程序来说至关重要.

另一个缺点是,在查看反汇编代码时,其他人更容易理解幻数.

我真的很感兴趣为什么编译器(Mono和.NET)完全这样做?

.net compilation const

4
推荐指数
1
解决办法
131
查看次数

标签 统计

.net ×2

compilation ×1

const ×1

double ×1

math ×1

reflector ×1

type-conversion ×1