转换为lambda表达式性能

时间:2013-03-31 07:56:19

标签: c# lambda

我想要使用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)
);

3 个答案:

答案 0 :(得分:4)

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

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

如果您要查询内存中的数据,那么它们的执行大致相同。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

只想在这里加2美分。当值类型被加框时,必须在将值类型转换为引用类型时分配和构造新对象。 String是一种引用类型,您将值类型转换为引用类型,因此涉及到装箱的成本。拆箱成本稍微低一些,因为您的对象已经分配了内存,您只需从堆中获取值并将其放入值类型的堆栈中。

Rest @Guffa已经明确了比较运算符的选择和成本。