我有很多遗留代码,其中json
是使用 for 循环手动解析的。这通常需要O(n)
时间。我知道json.net
在time
和space
方面会更好,但深入了解它是如何工作的,将有助于我做出明智的决定,是否值得真正努力继续投入时间和人力将所有东西都转移到 json.net。
问题解释为更一般的问题,假设您正在寻找有关为各种场景选择哪种 JSON 序列化实现的建议。
我知道这个问题有三个明显的答案:
- 牛顿软件 JSON.NET
- 提供丰富的功能和出色的性能
- ServiceStack.Text
- 提供简单性和卓越的性能
- BCL JsonSerializer
- 避免了第三方库依赖性,但速度明显变慢
如果您不关心第三方库依赖项,请选择第一个选项,因为它将为您提供性能和功能。如果您不需要大量功能,请评估ServiceStack.Text是否满足您的需求(如果不确定,请使用 JSON.NET)。在任何其他情况下,坚持你所拥有的。
此外,在你知道这个特定区域是性能瓶颈(或以其他方式需要替换,例如因为它是一个维护问题)之前,不要花时间通过替换 JSON 代码来加快代码速度。如果您正在考虑替换代码以获得性能,请隔离一些方法,以使用备用实现或库针对类似方案分析和基准测试当前代码,以避免根据假设做出决定。
最后,了解它的内部工作原理不应该成为您决策过程中的一个因素,除非您特别计划能够修改它的来源(或者需要能够理解它)。