此作业的要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2145]
要求0 以 战争与和平 作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。 (2分)
第一次
第二次
第三次
次第 |
时间(s) |
1 |
2.559 |
2 |
2.427 |
3 |
2.314 |
平均 |
2.433 |
要求1:要求1 给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化。
猜测最好是的用该是对最基层的字段进行操作的部分,因为调用的最多;还有就是对列表的排序问题
def countLine(line, word_Counts): # 用空格替换标点符号,避免造成乱码导致错误 line = replaces(line) ‘‘‘使用函数替换标点,使用自定义函数‘‘‘ words = line.split() ‘‘‘以空格分割成单词‘‘‘ for word in words: if word in word_Counts: word_Counts[word] += 1 else: word_Counts[word] = 1
由上至好使较多的是符号替换并整理文章的countline和函数排序,排序是内置的不能动。
可能是使用punctuation造成的。
修改
def replaces(line): str=[‘,‘,‘.‘,‘!‘,‘#‘,‘@‘,‘[‘,‘]‘,‘:‘,‘?‘,‘-‘,‘(‘,‘)‘,‘_‘,‘:‘] for ch in line: # 这里直接用了string的标点符号库将标点符号替换成空格,因为split() if ch in str: line = line.replace(ch, " ") return line
三次测试的时间都都在1S以下,相较于第一次的1.071有改善
countline下降0.01s左右。
原文:https://www.cnblogs.com/zhaomz853/p/9752699.html