为什么 JSON 反序列化与 System.Text.json 如此缓慢?

我有一个最小的项目,它用C#和Go编写了100,000次,反序列化json。性能差异很大。虽然很高兴知道使用 Go 可以实现性能目标,但我更愿意在 C# 中实现可比较的结果。鉴于C#慢了193倍,我认为错误在我这边,但我不知道为什么。


性能

$ dotnet run .

real    1m37.555s

user    1m39.552s

sys     0m0.729s


$ ./jsonperf

real    0m0.478s

user    0m0.500s

sys     0m0.011s

源代码 C#

using System;


namespace jsonperf

{

    class Program

    {

        static void Main(string[] args)

        {

            var json = "{\"e\":\"trade\",\"E\":1633046399882,\"s\":\"BTCBUSD\",\"t\":243216662,\"p\":\"43818.22000000\",\"q\":\"0.00452000\",\"b\":3422298876,\"a\":3422298789,\"T\":1633046399882,\"m\":false,\"M\":true}";


            for (int i = 0; i < 100000; i++)

            {

                if (0 == i % 1000)

                {

                    Console.WriteLine($"Completed: {i}");

                }


                var obj = BinanceTradeUpdate.FromJson(json);

            }


            Console.WriteLine("Done");

        }

    }

}


catspeake
浏览 90回答 1
1回答

犯罪嫌疑人X

这需要这么长时间的原因是,您每次都会初始化一个新对象。JsonSerializerOptions初始化序列化程序一次 &您将看到巨大的性能改进(对我来说是70%以上)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go