【发布时间】:2010-11-13 13:55:51
【问题描述】:
我有一个 SQL 查询,它只返回一个字段 - 一个 INT 类型的 ID。
而且我必须在 C# 代码中将其用作整数。
哪种方式更快且占用内存更少?
int id;
if(Int32.TryParse(command.ExecuteScalar().ToString(), out id))
{
// use id
}
或
int? id = (int?)command.ExecuteScalar();
if(id.HasValue)
{
// use id.Value
}
或
int? id = command.ExecuteScalar() as int?;
if(id.HasValue)
{
// use id.Value
}
【问题讨论】:
-
我知道这已经过时了,但相关的 Donald Knuth 引用:“程序员浪费了大量时间来思考或担心他们程序中非关键部分的速度,而这些效率上的尝试实际上已经考虑到调试和维护时会产生强烈的负面影响。我们应该忘记小的效率,比如大约 97% 的时间:过早的优化是万恶之源。但我们不应该放弃关键的 3% 的机会。
-
嘿@DannyNeumann,总的来说,我认为在这里发布它没有多大意义,因为它是 2009 年的问题。特别是,编写高效的代码仍然很重要。这就是我学会这样做的方式。我每天都会看到非常适合 Knuth 引用的可怕、可怕的代码。话虽如此,不应该花太多时间在非关键部分的过早优化上,但同时也不应该低效地编写非关键部分。
标签: c# .net ado.net tryparse executescalar