zoukankan      html  css  js  c++  java
  • 3 效能分析

    此作业的要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2145]

    https://git.coding.net/zhaomeizeng/wc.git

    要求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左右。

  • 相关阅读:
    佛教哲学 学习笔记 01-我愿为十方人做桥
    动手学python之python基础:标识符,注释及缩进
    动手学python系列序言
    基于深度学习的目标检测综述(一):简介及骨干网络
    软件项目风险管理
    axure
    软件项目管理
    软件测试方法
    期中总结
    UML图相关
  • 原文地址:https://www.cnblogs.com/zhaomz853/p/9752699.html
Copyright © 2011-2022 走看看