首页 > 解决方案 > 为什么用内存读取替换文件读取不会提高我的 Spring/Junit 测试性能?

问题描述

这是一个spring boot项目,我们用junit编写单元测试。在我的团队中,我们将来自下游服务的模拟响应保存在 .json 文件中,然后将这些文件解析为对象,然后我们使用这些对象来跟踪来自这些服务的响应应该是什么。这些用于我们的junit测试。在数百个单元测试中,我们必须为映射考虑多个文件/对象。它们通常看起来像:

MyReturnObject obj = objectMapper.readValue(Files.readAllBytes(Paths.get("C:\\object.json")), MyReturnObject);

您可能知道,从磁盘读取数据比从内存读取数据要慢,我们在一个项目中这样做了 200 多次。因此,我编写了一个 python 脚本,将所有这些文件读取替换为使用 .builder() 注释创建的对象。

MyReturnObject.builder().value1("1").value2("2").value3("3").build(); 

它甚至没有提高我们的 Junit 测试性能!我无法对正在发生的事情做出正面或反面,尤其是当所有证据都指向这给我们带来轻微的性能提升时,甚至像一秒钟。我只是在家里的 PC 上用两个 for 循环做了同样的事情(一个用于从内存中获取对象,另一个用于从文件中获取对象),并且内存读取速度始终是 3 倍。有任何想法吗?我为此花了三天的时间。这些文件都保存在 Spring 的 /resources/ 文件夹中。

标签: jsonspringspring-bootjunitfile-io

解决方案


推荐阅读