json - 为什么用内存读取替换文件读取不会提高我的 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/ 文件夹中。
解决方案
推荐阅读
- java - 背景图片覆盖游戏
- spring-boot - 使用 Micrometer 或 Spring Metrics 的 Prometheus 的 Spring Boot 指标
- reactjs - axios post请求在reactjs中发送表单数据
- pandas - 通过将行拆分为现有列来扩展行
- sql - 生成数字集oracle sql的所有可能组合
- openedge - 如何理解 client.mon 文件中提到的 Int-Proc 条目?
- c++ - Xerces:如何创建 DOM 文档
- primeng - PrimeNg (7.x) / P-TREE / Filter / 双滚动条
- html - 为什么与浏览网站相比,python requests.get() 检索到不同的图像 src
- java - 命令行上的输入重定向到 java 程序不适用于 Console 类