-3

我想在 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)
);
4

3 回答 3

4

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

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

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

不过,让我有点担心的是,您似乎使用浮点数作为标识符,这会在某些时候给您带来精度问题。浮点数并非旨在准确表示所有数字,通常应避免比较浮点数是否相等。

于 2013-03-31T08:09:54.027 回答
0

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

于 2013-03-31T08:07:27.443 回答
0

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

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

于 2013-03-31T08:21:21.383 回答