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


  • 相关阅读:
    nova-conductor与AMQP(二)
    nova-conductor与AMQP(一)
    nova-api中ExtensionManager的构造
    openstack身份认证与API请求流程
    nova-api源码分析(APP中用到的开源库)
    nova-api源码分析(WSGI server的创建及启动)
    novaclient源码分析
    机器学习-----线性回归浅谈(Linear Regression)
    分布式文件系统--GFS
    java 小结2 多态问题和容器介绍
  • 原文地址:https://www.cnblogs.com/MAY6/p/11576061.html
Copyright © 2011-2022 走看看