此要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2145
代码地址:https://git.coding.net/doubanjiang73/llll.git
要求0
在完成此次效能分析作业时,首先结合杨贵福老师的推荐与自己电脑的实际情况,我使用了ptime.exe计算每次运行消耗的时间。以《战争与和平》作为输入文件,重读向由文件系统读入。因为要能运行该文件,所以需要把ptime.exe与需要进行效能分析的文件放入一个文件夹中。
根据我所编写的代码测试能完成的功能,以下内容为效能测试较慢版本(为不易弄乱,在进行效能分析时较慢版本被命名为lwf.exe,截图中4.71s、4.56s、4.94s为我在非控制台中进行测试时的运行时间)。
要求1 给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出)。
我预测会在以下两个片段会是程序的瓶颈,因为以下两个代码在运行时都需要遍历整个文件的全部内容,所以我推测会增加运行时间。我预计通过减少对函数的调用进而缩短运行时间,预计算短5秒时间。
片段一:
def lower(s): ss = '' for i in s: if ord(i) in range(65,91): i = chr(ord(i)+32 ) ss += i return ss
片段二: txt = txt.replace(ch, " ")
要求2 通过 profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数(或代码片断)。
1.运行时间最长的三个片段
片段一:
def lower(s): ss = '' for i in s: if ord(i) in range(65,91): i = chr(ord(i)+32 ) ss += i return ss
片段二: def p_count(words,nn=5):
片段三: com = input(' >')
2.根据profile运行后得出的运行时间最长的三个片段,我发现这三个片段在运行时都需要遍历整个文件,所以以上三个片段运行时间较长。
要求3 根据瓶颈,"尽力而为"地优化程序性能。
根据profile运行后的得出的结果,如果想要缩短程序运行时间就要减少对 lower函数的调用,于是经过学习我发现可以使用python内建函数不必自己定义函数,这样可以大大缩短运行时间,下图分别为优化后的运行时间与在要求1中最花费时间的3个函数在优化后的运行时间。