| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834 |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Networkengineering1834/homework/11146 |
| 这个作业的目标 | 实现论文查重算法,学会PSP表格统计,学会性能分析和单元测试 |
1. Github仓库
https://github.com/zhhdf/DuplicateCheckingofPapers
2. PSP表格
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 40 | 40 |
| · Estimate | · 估计这个任务需要多少时间 | 40 | 40 |
| Development | 开发 | 400 | 700 |
| · Analysis | · 需求分析 (包括学习新技术) | 60 | 90 |
| · Design Spec | · 生成设计文档 | 30 | 30 |
| · Design Review | · 设计复审 | 80 | 80 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
| · Design | · 具体设计 | 60 | 60 |
| · Coding | · 具体编码 | 240 | 300 |
| · Code Review | · 代码复审 | 60 | 60 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 120 | 180 |
| Reporting | 报告 | 30 | 30 |
| · Test Report | · 测试报告 | 30 | 30 |
| · Size Measurement | · 计算工作量 | 10 | 10 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 20 |
| Total | · 合计 | 1230 | 1680 |
3. 计算模块接口的设计与实现过程

1.SingleSentence()函数用循环读入一个字符来分割一个句子的每个字,每个字符占String数组中的一个元素,最后返回String数组
2.将String数组代入ConstructingWordVector()构造词向量数组
3.利用main函数里的词向量余弦计算功能算出两个句子的相似程度

4. 计算模块接口部分的性能改进

从上图分析可得两个String对象的equals函数占用了很大的cpu时间
因此决定用char数组来代替String数组,用"=="来替代String.equals()

可以看到String.equals函数的cpu占用时间没有了,程序的运行速度也明显增加了
5. 计算模块部分单元测试展示

测试正常功能


6. 异常处理
IOException当读取文件和写入文件失败时抛出
浙公网安备 33010602011771号