第一次个人编程作业
Github链接:
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/networkengineering1934-Softwareengineering |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/networkengineering1934-Softwareengineering/homework/12137 |
| 这个作业的目标 | <论文查重算法设计,psp表格,单元测试> |
一、PSP表格:
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 20 | 30 |
| · Estimate | · 估计这个任务需要多少时间 | 60 | 300 |
| Development | 开发 | 450 | 600 |
| · Analysis | · 需求分析 (包括学习新技术) | 60 | 80 |
| · Design Spec | · 生成设计文档 | 50 | 60 |
| · Design Review | · 设计复审 | 30 | 30 |
| · Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 70 | 90 |
| · Design | · 具体设计 | 120 | 120 |
| · Coding | · 具体编码 | 200 | 180 |
| · Code Review | · 代码复审 | 40 | 60 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 30 | 30 |
| Reporting | 报告 | 100 | 90 |
| · Test Repor | · 测试报告 | 90 | 110 |
| · Size Measurement | · 计算工作量 | 30 | 20 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 20 |
| · 合计 | 1380 | 1820 |
二、计算模块接口的设计与实现过程:
1.流程图:

2.工程分包:

3.类:
bean:
AtomicFloat :应对并发情况的原子操作的类
WordGroup : 词组的实体类
main:
MainEntrance:主函数的入口

4.运行:

5.算法展示:
余弦相似度:
三、性能优化:
JProfiler 对性能进行监控操作




由线程图可以看出,优化前的程序只是一个线程,因此,如果加入线程的话,想必会提升速度
经过一段时间的思考,想到可以在遍历之前调用 parallelStream 的方式, 起到多线程同时访问数据流的作用,封装一个原子类,执行 CAS 操作,从而保证线程安全.
四、单元测试:

覆盖率

结果
五、小结:
通过这次个人的编程作业,笔者对单元测试,性能优化,性能监测等操作有了进一步的认识
浙公网安备 33010602011771号