您的位置:首页 > 编程语言 > C语言/C++

C++编程规范之7:编程中应该知道何时和如何考虑可伸缩性

2013-12-07 21:57 218 查看
摘要:

小心数据的爆炸性增长,不要进行不成熟的优化,但是要密切关注渐进复杂性.用户数据的算法应该能够预测所处理的数据量耗费的时间,最好不差于线性关系.如果能够证明优化必要而且非常重要,尤其在数据量逐渐增长的情况下,那么应该集中注意力改善算法的O(N)复杂性,而不是进行小型的优化。

防范可能的未来,要求我们要避免设计中含有面对更大的文件、更大的数据库、更多像素、更多窗口、更多进程和更多线路上传输的数据时会出现的性能陷阱的现象。

这一问题的解决方案分为两个部分。首先,即使不知道数据量是否会大到成为某个特定计算的问题,默认情况下也应该避免使用不能很好地应付用户数据量的算法,除非这种伸缩性不好的算法有明显的清晰性和可读性方面的好处。在编写程序时,要预先进行如下的处理:

1.使用灵活的、动态分配的数据,不要使用固定大小的数组。

2.了解算法的实际复杂性。

3.优先使用线性算法或者尽可能快的算法。

4.尽可能避免劣于线性复杂性的算法。

5.永远不要使用指数复杂性的算法。

其次,如果有测试数据表明优化非常必要而且重要,尤其是在数据量不断增加的情况下,那么应该集中精力改善O(N)复杂性,而不是把精力华仔节省一个多余假发这样的微观优化上。

总而言之,要尽可能优先使用线性(或者更好的)算法。尽可能合理地避免使用比线性算法差的多项式算法。竭尽全力避免使用指数算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: