强制转换lambda表达式的性能

本文关键字:性能 表达式 lambda 转换 | 更新日期: 2023-09-27 18:06:35

我想在lambda表达式中强制转换哪个更快?

  var callObject = CallObjectHolder.Instance.Get(x => x.Log.Id.ToString() ==  ev.src_unique_id);

   var callObject = CallObjectHolder.Instance.Get(x => x.Log.Id == System.Convert.ToDouble(ev.src_unique_id)
);

强制转换lambda表达式的性能

这取决于表达式发生了什么。

如果您正在对数据库进行调用,以便将表达式转换为SQL,那么第二种方法将更快,因为它只执行一次转换,而不是转换表中的每个值。

如果你正在查询内存中的数据,那么它们将执行大致相同的操作。

让我有点担心的是,它看起来像你使用浮点数作为标识符,这会在某些时候给你精度问题。浮点数并不是为了精确地表示所有数字而设计的,通常应该避免比较浮点数是否相等。

最快的方法是在比较循环之前将字符串转换为双once

我想在这里补充一下我的观点。当值类型被装箱时,当将值类型强制转换为引用类型时,必须分配和构造一个新对象。字符串是引用类型,而你要将值类型转换为引用类型,因此涉及到装箱的成本。拆箱在某种程度上成本较低,因为对象已经分配了内存,您只需从堆中获取值并将其放入值类型的堆栈中。

Rest @Guffa已经说明了比较操作符的选择和开销。