zoukankan      html  css  js  c++  java
  • 梅小雨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


  • 相关阅读:
    Angular Universal 学习笔记
    SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
    Angular 服务器端渲染的学习笔记(二)
    Angular 服务器端渲染的学习笔记(一)
    第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
    如何从 SAP Spartacus Product Detail 页面,找到其 Angular 实现 Component 的位置
    具备自动刷新功能的 SAP ABAP ALV 报表
    C++学习目录
    c--条件编译
    c--文件读写--二进制
  • 原文地址:https://www.cnblogs.com/MAY6/p/11576061.html
Copyright © 2011-2022 走看看