【发布时间】:2010-09-16 00:58:53
【问题描述】:
开发人员通常会在解决问题的两种可能方法之间做出选择——一种是惯用且易读的,另一种不太直观,但性能可能更好。例如,在基于 C 的语言中,有两种方法可以将数字乘以 2:
int SimpleMultiplyBy2(int x)
{
return x * 2;
}
和
int FastMultiplyBy2(int x)
{
return x << 1;
}
第一个版本对于技术和非技术读者来说更容易上手,但第二个版本可能表现更好,因为位移比乘法更简单。 (现在,我们假设编译器的优化器不会检测到这一点并对其进行优化,尽管这也是一个考虑因素)。
作为开发人员,最初的尝试哪个更好?
【问题讨论】:
-
有点苛刻。关于我们有时都有的担忧的好问题。 +1
-
这个例子显然是做作和琐碎的。你不会真的有一个带有硬编码乘数的函数。
-
重点是我看到很多问题,比如“
-
这是我在 stackoverflow 上读到的最好的问题之一。这涉及到计算机如何操作的实质,而不仅仅是语言的语义。 +1
-
@OutlawLemur 我知道这一点。但是有些人会问,例如,使用