第一次个人编程作业

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 操作,从而保证线程安全.

四、单元测试:


覆盖率

                  结果

五、小结:

通过这次个人的编程作业,笔者对单元测试,性能优化,性能监测等操作有了进一步的认识

posted @ 2021-09-20 00:45  ikram911  阅读(45)  评论(1)    收藏  举报