2017秋软工2 - 效能分析
coding:https://git.coding.net/137911934/SE20170914.git
要求0 以 战争与和平 作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。
要求1 给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出) 。
本程序都是用 Map 的基本操作进行实现,用 vector 进行功能辅助,最终实现功能,所以据我猜测,瓶颈应该在于大文件的读入。
要求2 通过 profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数(或代码片断)。要求包括截图。
经过测试,在程序运行过程中仅有 main 函数比较耗费时间,其余都是 map 应用库函数操作,对时间消耗不大。所以我推测主要时间耗费在大数据文件的读入处理。
要求3 根据瓶颈,"尽力而为"地优化程序性能。
通过 bing 进行查找学习发现,cin 读取数据时有额外开销,运用下面这行代码可以 “取消cin于stdin的同步” :
std::ios::sync_with_stdio(false);
我将这行代码加入到了我的程序中并重新进行调试。
要求4 再次 profile,给出在 要求1 中的最花费时间的3个函数此时的花费。要求包括截图。
通过 ptime 测试时间可以清楚的看到,运行时间减少了 0.7 秒左右,较少率接近 50% ,证明优化有效。
要求5 程序运行时间。根据在教师的机器 (Windows8.1) 上运行的速度排名,分为3档。此题得分,第1档20分, 第2档10分,第3档5分。功能测试不能通过的,0分。