每个人都希望自己的程序有效率,这无可厚非。就像我们每个人都希望自己能够漂亮一点儿一样。如果你是一个演员,漂亮对你来说至关重要。不过如果你是一个在荒岛上的程序员,那么很明显,能上网要比漂亮更有意义。希望程序有效率,这没有错,但是别忽视了应用环境。首先要问自己一个问题:“我的程序是否是时间敏感的?”
如果我用非常简单明了、直接的程序可以解决相应的问题,是否就不满足效率的要求了?千万别忘了,计算机干别的真不行,但是计算起来真的很快。
举例来说,一个包含一万个词的词典,满足用户基本的增加、删除和查找功能,你用最低效的数组和最高效的红黑树,对于最终的用户来说,根本感觉不到差别。
唯一的差别就是,对程序员来说,用红黑树实现,代码更多,开发周期更长,开发成本更高,代码更易出错。所以,在关注程序的效率问题之前,你首先要从面临的问题出发,问一问自己,效率是不是这个程序的瓶颈所在。完全不考虑对应的应用,只是在堆砌自己所学的知识,这个在《重构:改善既有代码的设计》[13]一书中有一个非常专业的称呼,叫“过设计”。
如果处理的问题数量级很大,或者是工业控制类时间敏感性程序,那么就不能简单地忽略效率的问题了。程序的效率归根结底在算法上,一个计算复杂度是O(n2)的算法,无论多么精巧地来实现,无论应用多少提高效率的小窍门,效率也不会高过一个复杂度为n 的算法。这个问题出在根本上,就像你是老鼠王国里的冠军,也毕竟是个老鼠,也会被一只哪怕最瘦弱的狮子杀死。所以如果我们探讨程序的效率,第一个问题就是要选择合
本文探讨了C语言编程中的效率问题,指出选择合适算法的重要性,强调不应盲目追求效率而忽视应用环境。作者提出,程序的80%运行时间集中在20%的代码段,即“Hot Spots”,并建议使用工具定位并优化这些代码。此外,文章强调使用“简单的C语言”原则,避免过度设计和不必要的复杂性。对于C语言的理解,作者认为深入学习编译原理有助于从底层理解语言。最后,文章讨论了C语言与C++、C#等语言的关系,以及程序员应如何选择合适的语言和持续学习的方向,强调算法和设计模式的重要性。
订阅专栏 解锁全文
4774

被折叠的 条评论
为什么被折叠?



