首页 > 其他 > 详细

3 效能分析

时间:2018-10-08 10:04:35      阅读:165      评论:0      收藏:0      [点我收藏+]

 

此作业的要求参见:[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:要求给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化。

猜测最好是的用该是对最基层的字段进行操作的部分,因为调用的最多;还有就是对列表的排序问题

 

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

要求2:通过profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数或代码片段。

技术分享图片

要求3:根据瓶颈,“尽力而为”地优化程序性能。

由上至好使较多的是符号替换并整理文章的countline和函数排序,排序是内置的不能动。

可能是使用punctuation造成的。

修改

def replaces(line):
    str=[‘,‘,‘.‘,‘!‘,‘#‘,‘@‘,‘[‘,‘]‘,‘:‘,‘?‘,‘-‘,‘(‘,‘)‘,‘_‘,‘:‘]
    for ch in line:
        # 这里直接用了string的标点符号库将标点符号替换成空格,因为split()
        if ch in str:
            line = line.replace(ch, " ")
        return line

要求4:再次profile,给出在要求1 中的最花费时间的3个函数此时的花费。

技术分享图片

 

 技术分享图片

技术分享图片

三次测试的时间都都在1S以下,相较于第一次的1.071有改善

countline下降0.01s左右。

3 效能分析

原文:https://www.cnblogs.com/zhaomz853/p/9752699.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!