主要观点:作者用 Go 写了一个 JSON 解析器libjson
,想在进行性能工作的同时进行语言开发,其解析器性能接近encoding/json
,但通过不同方式与 JSON 对象交互。通过libjson
的示例代码展示了其独特的访问方式,还提到了实现中的缺点,如访问较慢和可能的错误原因。作者将libjson
添加到JSONTestSuite项目中进行测试,发现 35 个通过,43 个未通过,重点分析了TestStandardFail
测试用例中失败的原因及解决方法,即修改(*parser).advance()
函数的条件。同时给出了不同输入大小下libjson
与其他解析器的性能对比(1.4ms 慢于 1MB 输入等)。
关键信息:
libjson
的实现目的和特点。encoding/json
与libjson
的访问方式差异。- JSONTestSuite项目及
libjson
的测试情况。 TestStandardFail
测试用例的失败原因及解决办法。- 性能对比结果。
重要细节:
libjson
的Get
函数实现方式及原因(Go 不支持非泛型结构体的方法泛型)。- 测试用例中各种 JSON 输入的具体形式和对应的测试情况。
(*parser).advance()
函数的修改细节及作用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。