【发布时间】:2017-12-28 21:35:10
【问题描述】:
我正在为 golang 编写一个任意 JSON 解析器,该项目即将完成。但是我发现了一个关于性能的令人困惑的问题:
我想测试解析大 (100Mb) JSON 字符串的性能,我使用测试文件本身在内存中初始化 JSON 结构并将封送的 JSON 字符串写入文件,然后从中读取,如果文件已经存在,不会在内存中初始化,直接从文件中读取。性能完全不同:直接从文件读取时,解析时间大约是两倍。同时,我正在测试解析 normal(1Kb) JSON string 和 deep(2Mb) JSON string 的性能,这两个几乎不受影响。
为什么?是CPU缓存吗?还是GC?还是别的?
https://github.com/acrazing/cheapjson 的代码,我在https://github.com/acrazing/cheapjson/issues/1 开了一个关于这个问题的问题。您可以从此处获取有关基准测试的更多详细信息。
【问题讨论】:
-
我无法重现您的问题。
-
@peterSO 你能告诉我你是怎么做测试的吗?
标签: json memory go garbage-collection cpu