软件工程 - 个人项目作业
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任健) |
这个作业的要求在哪里 | 个人项目作业 |
我在这个课程的目标是 | 学习软件工程的开发知识,培养工程化开发能力 |
这个作业在哪个具体方面帮助我实现目标 | 通过实操掌握PSP开发基础 |
1 概览
教学班级:006
项目地址:https://github.com/sinoyou/Software_Intersection
2 PSP2.1 分析
PSP 2.1 | 个人软件阶段 | ||
---|---|---|---|
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 120 | 150 |
· Design Spec | · 生成设计文档 | 60 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | - | - |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
· Design | · 具体设计 | 60 | 40 |
· Coding | · 具体编码 | 120 | 150 |
· Code Review | · 代码复审 | 30 | 30 |
· Test | · 测试(自我测试,修改代码,提交修改) | 240 | 210 |
Reporting | 报告 | ||
· Test Report | · 测试报告 | 60 | 50 |
· Size Measurement | · 计算工作量 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 15 | 30 |
合计 | 750 | 725 |
3 解题思路
4 设计实现过程
5 代码分析与性能分析
首先,使用Visual Studio自带的代码分析工具对所编写的代码进行了检查,得到没有issue发现的状态如下图所示:
而后,使用了VS的性能分析工具,将所参与的直线数量调整至最大输入量N=500000,进行性能分析运行,运行60秒后中断分析结果,定位到目前的消耗最大的函数是Line
类的静态方法get_intersection()
,再具体来说,是在生成交点时,自定义的Rational
分数类之间的四则运算操作开销很大,具体来说有一下两个方面:
- 其一:是new operation的频次过多,造成过大的性能开销。关于这方面我在短时间内还未找到妥善处理的方法。
- 第二:是标准空间中所定义的abs, max, min函数性能开销很大,在这些函数进行人工inline重写后,函数的性能开销明显下降,如下图所示。
- 第三:GCD(求最大公因数)用于化简分数,也是一个性能开销大的函数,在改写其递归结构变为while循环类型后,性能开销存在些许下降,但并不明显。
6 代码说明
由于类方法封装得比较好,因此单元测试比较方便,具体如下:
<br