项目名称:词频统计
作业要求:https://www.cnblogs.com/xinz/archive/2011/11/27/2265000.html
代码链接:https://github.com/YichongLeng/word_frequency
合作方式:
我们两人合作完成-c的处理
我们采取分工合作的方式,分别负责-x -f -p -v -d等功能的实现
在后来的效能分析,测试环节,首先我们一起优化整体逻辑,然后分别优化自己编写的函数性能的优化。
讨论方式:
刚开始就确定了整个程序大致由哪些函数构成,各个部分的输入输出。并确定原则:尽可能减少完整扫描这个txt文件的次数
同伴的优缺点:
优点:
- 熟练使用github
- 对于编译原理等知识有较好理解,能够很好的优化代码
- 逻辑清楚,能够在设计之初就提出高效能的算法
缺点:
- 刚开始对于PyCharm的效能分析工具不太会使用
效能分析:
采用PyCharm自带的Profile工具
起初,我们的代码运行速度很慢,实现-p -n -v功能的时间需要2s多
之后,我们分析程序各部分运行时间的结果,对以下几点做了优化:
- 首先是将简单的大小写字母判断,由函数调用的形式改为了直接在程序中执行的方式,提速很多,因为每一个字符我们都进行了大小写判断。
- 此外,调整了部分函数if else 的顺序,将经常执行的部分,调整到前面。判断大小写字母改为非大写字母即为小写字母的逻辑。
- 对于组合功能,编写一个函数完成对应功能,而非用多个函数多次遍历文件内容,加速效果明显
优化后,简单功能运行的时间控制在0.2s到0.3秒之间,对于-p控制在0.5s左右。
对比优化前后,进步明显。