1

所以这是一个普遍的问题。这是问题所在:

我目前正在与其他 5 人一起从事一个项目。在一个应用程序 (Java EE) 中,我们都被分配了不同的性能调整项目。但是,我们都需要报告与原始组件相比,我们真正实现了多少改进。现在,如果我们都在不同的时间检查我们的代码,我们如何必须在给定的时间内跟踪我们自己的个人性能改进?

我在想也许可以在我们的代码中添加标志并跟踪我所有的代码更改,但我觉得这太混乱了,因为例如让我们说改进就像使用原始数据类型而不是像整数对象一样,但是这个改进可能会转移到其他人的工作中。

谢谢。:)

4

1 回答 1

3

至于任何性能改进(无论是更好的速度还是更低的内存),您都应该设置一个测试平台。如果你不能用单元测试来做,如果它是一个 web 应用程序,试着写一个 JMeter 测试计划。

运行测试,始终使用相同的参数(相同的 JVM,以相同的最大堆开始,测试中相同的线程数等......)。

在未优化的应用程序上运行它,并使用一些工具导出一些基准数据(jdk中有很多,jvisualvm很容易但需要人工交互,jmap可以自动化)。

假设它使用 500Mb 的 ram 和 10 分钟来完成未优化版本的测试计划。

运行这些测试,每个开发人员都可以在检查源代码版本之前测试他所做的修改是否使情况变得更好,没有改变任何东西,甚至使情况变得更糟。

由于您签入代码,因此您知道谁签入了哪些修改,并且您可以(使用 git、svn 或任何其他现代源代码版本控制系统)签出特定版本。

针对各种版本运行测试,您可以查看您是否在降低 ram 消耗、时间或任何指标的任务中取得进展......以及作为副作用的还有谁为它做出了哪些贡献。

您甚至可以使用持续集成工具(如 Hudson、Jenkins 等)使其自动化。指示它检查、编译、部署、运行测试、收集数据、发送邮件,说明谁提交了什么以及如何更改数字,但拥有超级-计算机告诉谁是好人....不是最好的团队士气。

于 2012-08-01T02:39:54.633 回答