前几天,看boost的时候,又注意到一个很老的问题。就是boost的作者们都很统一的采用copy&swap的方式处理自赋值,而不是传统的用if语句来判断特例。这牺牲了在自赋值发生的时候的性能,却时大多数正常赋值的性能获得提升。
我们显然都知道,cpu的预读取和流水线,甚至cache都会受分支的影响。所以,一个良好的程序显然是尽量少用分支的。strategy模式就是一种很好的提高流程一致性的方法,有时候不仅仅是在设计上获得更好的封装
2007-6月-13的归档前几天,看boost的时候,又注意到一个很老的问题。就是boost的作者们都很统一的采用copy&swap的方式处理自赋值,而不是传统的用if语句来判断特例。这牺牲了在自赋值发生的时候的性能,却时大多数正常赋值的性能获得提升。 我们显然都知道,cpu的预读取和流水线,甚至cache都会受分支的影响。所以,一个良好的程序显然是尽量少用分支的。strategy模式就是一种很好的提高流程一致性的方法,有时候不仅仅是在设计上获得更好的封装 |