我们小组使用python完成本次作业, 采取分工的方式, 其中我负责初期的功能实现, 队友负责后期的性能改善和测试。

代码发布在了: https://github.com/Turtlesyu-27/ASE_Course/blob/master/pairProject2/main.py

 

我们约定了一个时间来讨论本次实现, 包括:具体实现什么样的功能和大致思路、 每个人负责的模块和功能、 接口形式等细节。

 

为了实现好的性能, 我们首先分析了各模块的实现方法和大致开销, 并尝试利用合适的数据结构和现有的库提高性能。 比如:用set来保存要被替换的单词, 用dict来记录词组出现的次数, 用正则表达式来滤出所有单词等等。 由于时间的限制, 还有优化的手段没有实现, 比如并行, 本次要实现的任务其实非常适合并行, 将内容按分隔符分成n部分, 可以并行的调用n个接口进行计算 最后再进行结果的整合。 

 

我的队友非常友善并且配合, 在讨论期间很认真配合。 最终我们采用了visual studio自带的性能分析工具进行效能分析, 第一次性能分析的结果如下:

, 发现程序的瓶颈在phraseCount函数中, 而在phraseCount函数内部:

发现函数主体又占了大半的运行时间, 于是对函数主体再进行优化, 主要是将存放分隔符的list变为set从而加速查找, 发现phraseCount函数的主体占用确有下降: