1)说的是程序是要供人去读,去维护,因此不能为了效率牺牲这方面的性能,导致程序难以理解,维护。那样,正确性,可靠性及健壮性就无从谈起了。
2) 是说要首先着眼于全局的优化,譬如路径是否合理,有没有多余的步骤,有没有多余的循环?
3) 找出瓶颈的意思是说,程序可能由若干步骤、若干部分组成。有可能大多数步骤的效率都是100,个别步骤的是10,你应该先优化效率低的这些地方。
4) 数据结构与实际要描述的对象,你要进行合理的优化,去除不必要的冗余,等等。而雹胡算法的优化,你可以看一个在一列排好序的数列中查找一个给定数的算法,一般讲算法的书上。采用不同的算法效率是大不一样的,这比仅仅优化代码的效果要好得多。
5) 效率分为(存储)空间效率和时间效率,这两者一般比较难以统一,往往要在两者之间权衡。不过随着计算机技术的发展,现在一般计算机都可以提供足够的空间,因此空间效率往往已经不成为问题了。你只要专注于提高时间效率就可以了!
6) 紧凑的代码主要是去除了好多必要的格式字符达成的。实际执行的机器唤森码都是经过编译产生的,而编译过程中机器会自动过滤掉格式字符,因此是否去除格式字符对源链拦编译产生的机器码没有什么影响。
选择好的算法, 小心地实戚桐现, 同时确定程序不做额外的事。例如, 即使世界上最优化的字符复制循环也比不上不用复制。当担心效率时, 要保持几样事情在视野中, 这很重要。首先, 虽然效率是个非常流行的话题, 它并不总是象人闭仔桐们想的那样重要。大多数程序的大多数代码并不是时间紧要的。当代码不是时间紧要时, 通常把代码写得清楚和可移植比达到最大效率更重要。记住, 电脑运行得非常非常快, 那些看起来 ``低效率" 的代码, 也许可以编译得比较有效率, 而运行起来也没有明显的延时。
试图预知程序的 ``热点" 是个非常困难的事。当要关心效率时, 使用 profiling 软件来确定程序中需要得到关注的地方。通常, 实际计算时间都被外围任务占用了 (例如 I/O 或内存的分配), 可以通过使用缓冲和超高速缓存来提高速度。
即使对于时间紧要的代码, 最无效的优化技巧是忙乱于代码细节。许多常被建议的 ``有效的代码技巧", 即使是很简单的编译器也会自动完成 (例如, 用移位运算符代替二的幂次方乘)。非常多的手动优化有可能是代码变得笨重而使效率反而低下了, 同时几乎不可移植。例如, 也许可以在某台机器上提了速, 但在另一台机器上去变慢了。任何情况下, 修整代码通常最多得到线性信轿坦能提高更好的算法可以得到更好的回报。
尽量减少程序的调用,调用的越多,运行的越缓滚慢。简化程序语句扰猛余,程序有的算法可能多种写法,语句越简练越好。能用硬件完成的知笑工作,就不要使用程序来完成。使用高级语言编写程序,可以提高效率。以上是我自己的一些见解,希望对你有所帮助。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)