软件工程 - 个人项目

软件工程 - 个人项目作业

项目 内容
这个作业属于哪个课程 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

猜你喜欢

转载自www.cnblogs.com/sinoyou/p/12457883.html