开发人员经常会面临两种解决问题的选择,一种是惯用的和易读的,另一种则不太直观,但性能可能更好。例如,在基于C的语言中,有两种将数字乘以2的方式:
int SimpleMultiplyBy2(int x)
{
return x * 2;
}
和
int FastMultiplyBy2(int x)
{
return x << 1;
}
第一版本对于技术和非技术读者来说更容易理解,但是第二个版本可能会表现更好,因为位移操作比乘法操作更简单。 (目前,让我们假设编译器的优化器不会检测到这一点并进行优化,尽管这也是一个考虑因素)。
作为开发人员,初始尝试哪一个会更好?