Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

【开发工具与关键技术】Eclipse Neon.3 Release (4.6.3) 、Java
【作者】郭瑞
【撰写时间】2020年9月23

1、代码评审

第一步首先,采用Checkstyle中的Google Checks标准进行代码评议,发现代码全亮,没有问题。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

接下来,采用Sun Checks标准进行测试,发现代码全是不规范。可以看出sun公司的代码规范足够标准。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

第二步,利用SpotBugs查找项目,结果为测试类中存在两个bug。解决变法是用Random.nextInt()代替 (int)Math.random(),来生成随机数。虽然最终bug消失,但觉得没有真正弄懂。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

第三步,利用PMD进行代码审查。提示类体没有放在包中,还有类名命名第一个字母必须为大写,以满足一定的正则表达式。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

在修改之后,结果显示,部分不规范被消除。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

2、代码性能优化

在安装JProfiler 11.1.4版本并关联Eclipse之后,以Profile形式运行程序,可以看到内存、垃圾回收和类整体分析的情况。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

也可以看到所有对象的生成情况。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

同时也可以看到,程序运行过程中调用最多的函数有,调用线程sleep()之后线程处于等待状态后又重新启动的run(),还有向面板中添加按钮的add(),以及向控制台输出map二维数组的output_map()等。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

那怎么改进呢?我们这里对三个方面进行改进,分别有

  • 用直接更新按钮颜色的方式,取代重绘(repaint())面板并重新添加新的不同颜色的按钮的方式
    Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

  • 取消向控制台输出二维数组信息。并且暂停界面时,用Thread.sleep(50)代替println(“暂停中!”)。
    Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化

最终可以看到性能测试的部分结果如下,最常使用函数不再是平均执行时间为8us的add方法,而是平均执行时间为4us的setBackGround()方法。修改这几项之后,性能有所改善,但也只是一小部分改进。
Java Eclipse利用Checkstyle、Findbug和JProfiler进行代码评审与程序性能优化
希望有所帮助。