效能分析
作业要求【https://edu.cnblogs.com/campus/nenu/2018fall/homework/2145】
代码地址【https://coding.net/u/liuyy0817/p/counts/git】
要求0 以 战争与和平 作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。
要求1 给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出) 。
要求2 通过 profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数(或代码片断)。要求包括截图。
要求3 根据瓶颈,"尽力而为"地优化程序性能。
要求4 再次 profile,给出在 要求1 中的最花费时间的3个函数此时的花费。要求包括截图
要求5 程序运行时间。根据在教师的机器 (Windows8.1) 上运行的速度排名,分为3档。此题得分,第1档20分, 第2档10分,第3档5分。功能测试不能通过的,0分。
第一次运行时间:
CPU参数:
第二次运行时间:
CPU参数:
第三次运行时间:
CPU参数:
平均时间约为1.1483s
我猜测瓶颈是在匹配文件名处,因为他需要每一次都进行比较。
1 for (int i = 0; i<len; i++) 2 { 3 if (isalpha(temp[i]) || temp[i] == '-' || temp[i] == '\'') 4 { 5 tmp[j] = temp[i]; 6 j++; 7 } 8 9 }
执行最多的三个函数
至于优化,我实在想不出来该如何进行优化,对此,我需要更深入的学习。