【发布时间】:2025-12-18 12:50:02
【问题描述】:
在工作中,我经常使用 Spring Boot 后端。我不时需要优化方法以更快地运行,以便用户不必等待并且请求不会超时。
观看此视频后:https://youtu.be/oewDaISQpw0?t=566 。我真的很喜欢每行代码显示执行时间的想法,而不是完整的方法。我开始寻找类似的 Java 工具,但一无所获。
所以我开始考虑自己的解决方案。
我创建了一个类,它接受一个 .java 文件并以某种方式对其进行编辑,每行之后都有一个时间打印,编译它并将其加载到代码中以执行它。在执行之前,我重定向 System.out 流以捕捉时间打印。这有点工作,但仅适用于没有依赖关系的独立类,对于我的 Sring 服务,取决于其他服务和存储库,它并不真正适用。所以我考虑用我编辑的类替换运行时的类,这在java(?)中并不真正起作用。我还尝试使用 InvocationHandler 来捕获我的服务的方法调用并将它们路由到我编辑的类,但我仍然需要依赖项,并且显然方法代理确实只适用于接口。
我的目标是拥有方法和类注释,这将标记要进行速度测试的类/方法。当被调用时,他们的时间将被记录下来,并以格式化的 .html 格式在暴露的端点上提供。
我现在有点想不通,可能需要一些帮助。
提前致谢。
【问题讨论】:
-
在每行打印时间对于测量运行时间来说听起来是个坏主意,因为打印到控制台/文件比实际行(通常)花费更多时间。这会对测量产生一定的影响。
-
每次打印后我都会重置计时器,所以我认为这不是问题。
标签: java spring-boot performance optimization