• 梅小雨20190919-3效能分析


    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7628

    • 要求0 以 战争与和平 作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数。

    要求0 以《战争与和平》作为输入文件,重读向由文件系统读入。连续三次运行,给出每次消耗时间、CPU参数

    测试方法:输入ptime wf -s < war_and_peace.txt

    第一次测试时间截图:

     第二次测试时间截图:

     第三次测试时间截图:

     统计表:

     要求1 给出你猜测程序的瓶颈。你认为优化会有最佳效果,或者在上周在此处做过优化 (或考虑到优化,因此更差的代码没有写出) 。

    瓶颈:字符转换过程中所用时间过多,可以通过函数封装的方法进行代码效率的优化

    while True:
            lastchar = word1[-1:]
            if lastchar in [",", ".", "!", "?", ";", '"',"-","*","%"]:
                word2 = word1.rstrip(lastchar)
                word1 = word2
            else:
                word2 = word1
                break
     
        while True:
            firstchar = word2[0:]
            if firstchar in [",", ".", "!", "?", ";", '"',"-","*","%"]:
                word3 = word2.lstrip(firstchar)
                word2 = word3
            else:
                word3 = word2
                break
    

    要求2 通过 profile 找出程序的瓶颈。给出程序运行中最花费时间的3个函数(或代码片断)。要求包括截图。 (5分)

    要求 分析为什么此处是瓶颈。要求 profile需要得到函数的运行时间和次数。仅得到CPU和内存占用,不得分。

    输入python -m cProfile -s time wf.py -s < war_and_peace.txt

    最耗费时间的3个函数:

     要求3 根据瓶颈,"尽力而为"地优化程序性能。 (5分)

     修改后的代码片段:

    while True:
                   lastchar = word1[-1:]
                   for lastchar in '
     .,"':
                       word2 = word1.rstrip(lastchar)
                       word1 = word2
                   else:
                       word2 = word1
                       break
     
               while True:
                   firstchar = word2[0:]
                   for lastchar in '
     .,"':
                       word3 = word2.lstrip(firstchar)
                       word2 = word3
                   else:
                       word3 = word2
                       break
                       # build a wordList of lower case modified words
               word_list2.append(word3)

    对单词格式化部分的字符进行封装

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

     此时三个函数的花费:

     再测试三次:

     

    要求5 程序运行时间。根据在教师的机器 (Windows8.1) 上运行的速度排名,分为3档。此题得分,第1档20分, 第2档10分,第3档5分。功能测试不能通过的,0分。

    供老师测试的git地址为

    https://e.coding.net/meixiaoyu/xn.git


  • 相关阅读:
    电话号码的字母组合(力扣第17题)
    太平洋大西洋水流问题(力扣第417题)
    被围绕的区域(力扣第130题)
    ZooKeeper的本地安装和分布式安装
    朋友圈(力扣第547题)
    岛屿数量(力扣第200题)
    岛屿的最大面积(力扣第695题)
    再论力扣第279题--完全平方数
    .net core使用CSRedisCore连接哨兵集群,并用作redis使用分布式缓存。
    使用docker搭建reids主从,哨兵。
  • 原文地址:https://www.cnblogs.com/MAY6/p/11576061.html
Copyright © 2020-2023  润新知