Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA性能洞察,重构现有代码_Java_Jackson - Fatal编程技术网

JAVA性能洞察,重构现有代码

JAVA性能洞察,重构现有代码,java,jackson,Java,Jackson,我有如下代码,目标是将数据层的输出转换为通用数据格式,以便其他层可以使用 在LT运行期间,我观察到这种方法占用了相当多的cpu时间,但与所有时间相比,它看起来还是可以管理的 但担心当它进行压力测试时,它可能会崩溃,所以考虑进行重构以消除对象映射器的使用,并通过迭代进行转换 我不太喜欢将一个对象转换为字符串,然后再转换回另一个对象结构。我的信念是避免转换(对象-->字符串-->对象),这样可以节省时间和内存。这是正确的假设吗 ObjectMapper om = new com.fasterxml.

我有如下代码,目标是将数据层的输出转换为通用数据格式,以便其他层可以使用

在LT运行期间,我观察到这种方法占用了相当多的cpu时间,但与所有时间相比,它看起来还是可以管理的

但担心当它进行压力测试时,它可能会崩溃,所以考虑进行重构以消除对象映射器的使用,并通过迭代进行转换

我不太喜欢将一个对象转换为字符串,然后再转换回另一个对象结构。我的信念是避免转换(对象-->字符串-->对象),这样可以节省时间和内存。这是正确的假设吗

ObjectMapper om = new com.fasterxml.jackson.databind.ObjectMapper();
String listGridData = om.writeValueAsString(com.fasterxml.jackson.databind.node.ArrayNode grid);
List<Map<String, Object>>   responseList = om.readValue(listGridData,
                    new TypeReference<List<Map<String, Object>>>() {
                    });
ObjectMapper om=new com.fasterxml.jackson.databind.ObjectMapper();
字符串listGridData=om.writeValueAsString(com.fasterxml.jackson.databind.node.ArrayNode网格);
List responseList=om.readValue(listGridData,
新类型引用(){
});

您希望重用ObjectMapper。每个应用程序应该有一个实例。对象映射器是线程安全的,重用它没有问题

从性能角度来看,第二行不是问题。有没有它几乎是一样的

第三行的性能取决于要解析字符串的对象的复杂性。它越复杂,初始化的引用就越多,占用的内存就越多。这将对性能产生影响

在第三步中解析到的对象的轻量级与内存管理以及ObjectMapper的重用一起至关重要