软件构造lab5

3.1 Static Program Analysis
阅读google规范,对Lab4 代码进行人工代码走查,做出修改。
关注命名、布局(空行、空格、缩进、分行等)、注释(java doc、RI、AF、safety from rep exposure、函数 spec 等)、文件/包的组织等。

使用 CheckStyle 和 SpotBugs 工具对经过人工走查的 Lab4 代码进行自动的静态代码分析。还是很快乐的

3.2 Java I/O Performance Optimization
增加一个新功能:将经过各种人工操作之后的CircularOrbit 数据写入一个新的文本文件进行持久化存储。
并不困难,也不是第一次做这种功能了

采用 3 种不同的 Java I/O 策略对你程序中文件 I/O 进行改进,观察 I/O 效率的差别
reader/writer
scanner
bufferreader/bufferwriter

通过实验来度量不同实现方式的 I/O 性能差异:
增加代码,用于收集读文件和写文件环节分别消耗的时间,进行对比分析
在做此对比时,仅考虑 I/O 环节,不考虑根据读入的数据构造轨 道对象的时间
不同的方式,差异还是很大的

3.3 Java Memory Management and Garbage Collection (GC)

使用-verbose:gc 等参数,或者使用jstat,jmap等命令行工具,进行监控和分析
尝试优化程序的内存参数设定

3.4 Dynamic Program Profiling

使用VisualVM 启动程序,让程序读入文件,并对生成的图进行各类操作

选择 CPU Profiling,动态监控程序的执行时间性能:
查看程序中执行的各方法所耗费的时间、所占的比例;

选择 memory profiling,动态监控程序的内存空间性能:
查看内存空间中不同类型的对象的个数、所占内存空间大小、所占空间比例等;

3.5 Memory Dump Analysis and Performance Optimization

让程序读取大文件
导出当前时刻的 HPROF 文件
使用 MAT 来分析该导出文件
使用 OQL 来进行查询

心得:
代码“看起来很美”和“运行起来很美”并不冲突,我更倾向后者
诸如SpotBugs和CheckStyle这样的代码静态分析工具改善了代码质量
Java提供了这么多种I/O的实现方式,其实体现了JDK自身代码的逐渐优化过程
JVM自动进行垃圾回收,从而避免了程序员手工进行垃圾回收的麻烦,但还有改进的空间

猜你喜欢

转载自blog.csdn.net/weiaibeachsea/article/details/93406397