Revisited: Is WCF faster than ASP.NET Core? Of course not! Or is it?

Revisiting an article about how I got triggered after somebody exclaimed that WCF had lower response times than ASP.NET Web API and ASP.NET Core MVC.

Revisited: Is WCF faster than ASP.NET Core? Of course not! Or is it?

Previously, I wrote an article about how I got triggered after somebody on Reddit exclaimed that WCF was faster had lower response times than ASP.NET Web API and ASP.NET Core MVC.

The outcome was that, yes, with the default configuration, WCF does have lower response times. When you start tweaking with the serializers, both ASP.NET Web API and ASP.NET Core MVC come out on top.

The article kicked up a bit of a storm on Reddit, though, with people complaining that the comparison wasn’t fair, that I should have done this or that. Somebody even wrote an entire blog post about how it should be done. I wanted to address some of those comments.

Expectations

In my original article, I did not explain my intentions very well. It was not meant as a be-all-end-all determination of whether to use WCF or not. There are very valid reasons for using or not using WCF, besides the performance. I was simply trying to figure out whether WCF could have better per-request latency than the existing ASP.NET offerings.

Latency doesn’t mean better performance

Several people pointed out that performance isn’t just about latency. Specifically ASP.NET Core and Kestrel have been designed to be able to handle many requests concurrently, probably at the cost of some latency. I definitely agree with the statement, but my post was only about latency, because it is still an important metric in the performance of your service. It also happens to be one of the easier ones to measure.

You’re doing unnecessary in-place computations

Josh Bartley wrote an entire article in reply to mine. Thanks for taking the time to do that, Josh.

In the article, he mentions that I’m doing reflection in every call to construct the URI for the Web API/ASP.NET Core requests. He makes a fair point, along with some other ones, like how I was using delegates to switch between implementations. I’m not sure how much that specifically affects the numbers, but it sure is ugly. I rewrote all of the benchmarks to use a type hierarchy instead of big ugly switch statements, and I made sure to only use reflection once, during the initialization. Let’s see what has changed.

Method ItemCount Mean
LargeAspNetCoreMessagePackFuncs 100 9 017,7 μs
LargeAspNetCoreMessagePackHttpClientAsync 100 8 882,4 μs

There’s a very small improvement, but it’s not very impressive. I think it’s safe to say that reflecion and using delegates was not really an issue.

Asynchronous is killing the numbers

Redditor Langebein remarked the following:

You’re doing PostAsync in the WebApi tests, while doing synchronous calls with WCF. I'd wager a lot of the difference is made up from starting tasks and spinning up threads with the fancy HttpClient.

That’s an interesting point. With my new code structure in place, I could easily add other types of clients. First, let’s see what happens if we don’t await everything.

Method ItemCount Mean
LargeAspNetCoreMessagePackHttpClient 100 8 699,5 μs
LargeAspNetCoreMessagePackHttpClientAsync 100 8 882,4 μs

That’s a significant difference already. But Langebein was talking about HttpClient as a whole. So let’s see what happens when we use good ol’ HttpWebRequest.

Method ItemCount Mean
LargeWebApiMessagePackHttpClient 100 9 292,9 μs
LargeWebApiMessagePackHttpClientAsync 100 9 372,5 μs
LargeWebApiMessagePackHttpWebRequest 100 7 023,7 μs
LargeAspNetCoreMessagePackHttpClient 100 8 699,5 μs
LargeAspNetCoreMessagePackHttpClientAsync 100 8 882,4 μs
LargeAspNetCoreMessagePackHttpWebRequest 100 6 347,1 μs
LargeWcfText 100 10 306,5 μs

That’s a pretty big win. For all its fanciness, HttpClient is adding a lot of overhead, possibly related to its asynchronicity. For reference, I’ve added the fastest WCF result from the earlier post, and there is an undeniable advantage to ASP.NET Core and MessagePack. ASP.NET Web API does pretty well, too.

Since we’ve established that using HttpWebRequest offers the lowest latency, let’s establish a new baseline.

Method ItemCount Mean
LargeWcfText 100 10 306,5 μs
LargeWcfWebXml 100 10 125,9 μs
LargeWcfWebJson 100 12 535,9 μs
LargeWebApiJsonNetHttpWebRequest 100 14 204,2 μs
LargeWebApiMessagePackHttpWebRequest 100 7 023,7 μs
LargeWebApiXmlHttpWebRequest 100 12 461,1 μs
LargeWebApiUtf8JsonHttpWebRequest 100 11 023,6 μs
LargeAspNetCoreJsonNetHttpWebRequest 100 18 784,1 μs
LargeAspNetCoreMessagePackHttpWebRequest 100 6 347,1 μs
LargeAspNetCoreXmlHttpWebRequest 100 20 484,6 μs
LargeAspNetCoreUtf8JsonHttpWebRequest 100 9 944,2 μs

Now we can see MessagePack and Utf8Json (on ASP.NET Core MVC) easily overtaking WCF, and even XML on ASP.NET Core MVC is getting close.

What about binary serialization for WCF? And raw TCP?

Several people commented that I should have included more WCF options, such as binary serialization and the revered NetTcpBinding. Binary serialization was simply something I forgot about after a couple of years of not doing WCF.

NetTcpBinding is not something I think is fair to compare with. There is just an overhead to using HTTP that the ASP.NET Core and Web API tests cannot avoid. I decided to include it for argument’s sake.

Interestingly enough, the way I was invoking the WCF client meant I was creating a new client for each call. For the HTTP bindings, this was not an issue, because they’re handing off connection management to the HTTP library. NetTcpBinding has to do it by itself. The way I was doing it, I was never actually releasing clients, which meant sockets would stay open forever. I tried benchmarking it, but it never even got past the ‘pilot’ phase, where BenchmarkDotNet tries to determine the optimum number of invocations per run.

After I’d modified the code to create a client and immediately release it afterwards, things were a little better. A little better. Now I would actually reach the ‘main’ phase, but eventually, the process would either halt or throw an exception, because it was occupying sockets so quickly that they weren’t getting released in time.

Eventually I had to settle for using a single client instance for the lifetime of the benchmark. Unsurprisingly, the results are very good.

Method ItemCount Mean
LargeWcfText 100 10 306,5 μs
LargeWcfWebXml 100 10 125,9 μs
LargeWcfWebJson 100 12 535,9 μs
LargeWcfNetTcp 100 5 469,9 μs
LargeAspNetCoreMessagePackHttpWebRequest 100 6 347,1 μs

Binary serialization was a fair option, that I’d just forgotten to include. It was quickly included, and it is definitely the fastest out-of-box serialization option for WCF. Still, MessagePack on ASP.NET Core MVC has an ever so slightly lower response time.

Method ItemCount Mean
LargeWcfText 100 10 306,5 μs
LargeWcfWebXml 100 10 125,9 μs
LargeWcfWebJson 100 12 535,9 μs
LargeWcfBinary 100 6 889,3 μs
LargeWcfNetTcp 100 5 469,9 μs
LargeAspNetCoreMessagePackHttpWebRequest 100 6 347,1 μs

How about a comparison between Full Framework and .NET Core?

I very much wanted to include this, but I kept running into issues with BenchmarkDotNet, which either failed half-way, or didn’t report all of the metrics.

There’s no fair comparison between WCF and the others!

Redditor IAmVerySmarter (who, incidentally, also suggested using NetTcpBinding) complained that, because there was no benchmark between WCF and ASP.NET Core MVC or Web API using the MessagePack, it wasn’t fair to compare.

Unfortunately, the only package I could find to use MessagePack with WCF is MsgPack.Wcf, which uses MsgPack.Cli instead of MessagePack. According to the benchmarks, MsgPack.Cli takes a lot more time to serialize and deserialize than MessagePack. It’s still a fair comparison, so let’s see.

Method ItemCount Mean
LargeWcfText 100 10 306,5 μs
LargeWcfBinary 100 6 889,3 μs
LargeWcfMsgPackCli 100 22 791,3 μs
LargeAspNetCoreMessagePackHttpWebRequest 100 6 347,1 μs
LargeWebApiMsgPackCliHttpWebRequest 100 28 510,5 μs
LargeAspNetCoreMsgPackCliHttpWebRequest 100 26 311,1 μs

As you can see, MsgPack.Cli on either ASP.NET Core MVC or ASP.NET Web API takes several times longer than MessagePack. In fact, it takes longer than any other serializer tested. However, MsgPack.Cli on WCF takes a bit less time than on ASP.NET Core or ASP.NET Web API. This might indicate that the underlying infrastructure for WCF is the faster one.

Can you add [framework/serializer] to the comparison?

I could, yes. On the other hand, the source code is right there, so you could also fiddle around with it yourself.

ZeroFormatter

One serializer that I’ve seen mentioned several times is ZeroFormatter. This serializer claims to provide ‘infinitely fast deserialization’. That’s a bold claim, even from its creator, neuecc, who’s also responsible for the excellently performing MessagePack and Utf8Json libraries.

Method ItemCount Mean
LargeWebApiMessagePackHttpWebRequest 100 7 023,7 μs
LargeAspNetCoreMessagePackHttpWebRequest 100 6 347,1 μs
LargeWebApiZeroFormatterHttpWebRequest 100 7 998,7 μs
LargeAspNetCoreZeroFormatterHttpWebRequest 100 6 888,7 μs

It does pretty well, but it’s not quite as quick as MessagePack. Note that this test consists of serializing, then deserializing, followed by serializing some other stuff, and then finally deserializing that again. Deserializing might be ‘infinitely fast’, but serializing apparently is not.

Benchmark code

In response to the previous article, I got a lot of questions from people who wanted to see the code I used to benchmark. There was a link hidden somewhere in the article, so let me now make it clear:

Here is the benchmark code: GitHub

New results

The new results table is simply huge, because I’ve added a few serializers, and mostly because now every serializer/host combination based on ASP.NET is tested with HttpClient and HttpWebRequest. Making the sort of interactive graph from the previous post was a lot of work, and there’s too much uninteresting data, so I’ve decided to include a single graph of the following:

  • Mean round-trip times for a single call, sending 100 ‘large’ objects to the server, in response to which the server sends 100 objects back to the client.
  • For ASP.NET Web API and ASP.NET Core MVC, all of the benchmarks use HttpWebRequest.

The entire table of results is included here, but since it is so large, a CSV of the results is also available, for easier viewing.

Method ItemCount Mean P95 Gen 0 Gen 1 Gen 2 Allocated
SmallWcfText 0 336,5 μs 345,6 μs 8,7891 - - 28,17 KB
SmallWcfWebXml 0 371,0 μs 377,6 μs 10,2539 - - 31,66 KB
SmallWcfWebJson 0 380,2 μs 401,3 μs 10,2539 - - 33,07 KB
SmallWcfBinary 0 344,4 μs 351,6 μs 8,7891 - - 27,65 KB
SmallWcfNetTcp 0 108,7 μs 110,5 μs 1,4648 - - 4,62 KB
SmallWcfMsgPackCli 0 368,4 μs 375,4 μs 10,2539 - - 32,02 KB
SmallWebApiJsonNetHttpClient 0 864,3 μs 934,3 μs 26,3672 11,7188 - 85,28 KB
SmallWebApiJsonNetHttpClientAsync 0 906,8 μs 941,0 μs 25,3906 9,7656 - 85,1 KB
SmallWebApiJsonNetHttpWebRequest 0 361,6 μs 368,2 μs 19,0430 6,8359 - 69,87 KB
SmallWebApiMessagePackHttpClient 0 775,5 μs 884,3 μs 17,5781 5,8594 - 61,4 KB
SmallWebApiMessagePackHttpClientAsync 0 855,8 μs 900,9 μs 16,6016 5,8594 - 64,05 KB
SmallWebApiMessagePackHttpWebRequest 0 450,4 μs 476,3 μs 14,6484 5,3711 - 52,47 KB
SmallWebApiMsgPackCliHttpClient 0 1 079,8 μs 1 105,8 μs 83,9844 11,7188 - 264,17 KB
SmallWebApiMsgPackCliHttpClientAsync 0 1 119,8 μs 1 144,6 μs 85,9375 9,7656 - 267,14 KB
SmallWebApiMsgPackCliHttpWebRequest 0 543,8 μs 555,6 μs 60,0586 11,2305 - 186,32 KB
SmallWebApiXmlHttpClient 0 942,7 μs 957,5 μs 29,2969 11,7188 - 104,33 KB
SmallWebApiXmlHttpClientAsync 0 951,0 μs 958,3 μs 29,2969 11,7188 - 103,51 KB
SmallWebApiXmlHttpWebRequest 0 518,6 μs 525,3 μs 29,2969 13,1836 - 93,74 KB
SmallWebApiUtf8JsonHttpClient 0 831,9 μs 883,6 μs 16,6016 6,8359 - 60,96 KB
SmallWebApiUtf8JsonHttpClientAsync 0 815,5 μs 902,7 μs 18,5547 6,8359 - 64,02 KB
SmallWebApiUtf8JsonHttpWebRequest 0 463,1 μs 480,3 μs 14,1602 5,3711 - 52,3 KB
SmallWebApiZeroFormatterHttpClient 0 975,3 μs 1 033,9 μs 68,3594 7,8125 - 225,09 KB
SmallWebApiZeroFormatterHttpClientAsync 0 1 035,9 μs 1 070,8 μs 72,2656 7,8125 - 226,42 KB
SmallWebApiZeroFormatterHttpWebRequest 0 505,1 μs 523,0 μs 38,5742 10,2539 - 128,45 KB
SmallAspNetCoreJsonNetHttpClient 0 547,4 μs 618,6 μs 17,5781 - - 55,33 KB
SmallAspNetCoreJsonNetHttpClientAsync 0 779,5 μs 862,0 μs 17,5781 - - 55,4 KB
SmallAspNetCoreJsonNetHttpWebRequest 0 421,9 μs 443,5 μs 14,1602 - - 43,97 KB
SmallAspNetCoreMessagePackHttpClient 0 508,3 μs 547,3 μs 11,7188 - - 38,97 KB
SmallAspNetCoreMessagePackHttpClientAsync 0 520,3 μs 562,6 μs 13,6719 - - 42,88 KB
SmallAspNetCoreMessagePackHttpWebRequest 0 344,0 μs 358,0 μs 8,7891 - - 28,42 KB
SmallAspNetCoreMsgPackCliHttpClient 0 797,8 μs 887,2 μs 76,1719 1,9531 - 239,6 KB
SmallAspNetCoreMsgPackCliHttpClientAsync 0 863,8 μs 1 022,6 μs 78,1250 0,9766 - 244,78 KB
SmallAspNetCoreMsgPackCliHttpWebRequest 0 474,4 μs 484,4 μs 52,2461 0,4883 - 163,6 KB
SmallAspNetCoreXmlHttpClient 0 742,2 μs 853,3 μs 29,2969 - - 90,66 KB
SmallAspNetCoreXmlHttpClientAsync 0 813,4 μs 927,5 μs 29,2969 - - 90,54 KB
SmallAspNetCoreXmlHttpWebRequest 0 460,9 μs 465,6 μs 26,3672 - - 82,56 KB
SmallAspNetCoreUtf8JsonHttpClient 0 552,5 μs 638,9 μs 11,7188 - - 36,19 KB
SmallAspNetCoreUtf8JsonHttpClientAsync 0 606,8 μs 719,9 μs 12,6953 - - 39,32 KB
SmallAspNetCoreUtf8JsonHttpWebRequest 0 431,3 μs 443,7 μs 7,3242 - - 23,53 KB
SmallAspNetCoreZeroFormatterHttpClient 0 552,2 μs 579,3 μs 38,0859 - - 121,4 KB
SmallAspNetCoreZeroFormatterHttpClientAsync 0 550,5 μs 592,1 μs 38,0859 - - 121,29 KB
SmallAspNetCoreZeroFormatterHttpWebRequest 0 397,5 μs 408,5 μs 8,7891 - - 27,08 KB
LargeWcfText 0 337,7 μs 345,0 μs 8,7891 - - 28,08 KB
LargeWcfWebXml 0 365,2 μs 374,5 μs 10,2539 - - 31,65 KB
LargeWcfWebJson 0 376,6 μs 384,3 μs 10,7422 - - 33,03 KB
LargeWcfBinary 0 352,9 μs 360,6 μs 8,7891 - - 27,68 KB
LargeWcfNetTcp 0 109,9 μs 111,9 μs 1,4648 - - 4,63 KB
LargeWcfMsgPackCli 0 374,4 μs 384,5 μs 10,2539 - - 32,02 KB
LargeWebApiJsonNetHttpClient 0 880,4 μs 919,6 μs 25,3906 11,7188 - 85,29 KB
LargeWebApiJsonNetHttpClientAsync 0 915,1 μs 939,4 μs 25,3906 9,7656 - 85,33 KB
LargeWebApiJsonNetHttpWebRequest 0 469,3 μs 492,4 μs 19,0430 6,3477 - 70,05 KB
LargeWebApiMessagePackHttpClient 0 815,6 μs 902,9 μs 16,6016 5,8594 - 61,22 KB
LargeWebApiMessagePackHttpClientAsync 0 855,1 μs 907,5 μs 18,5547 6,8359 - 64,4 KB
LargeWebApiMessagePackHttpWebRequest 0 446,9 μs 464,0 μs 14,1602 5,3711 - 52,24 KB
LargeWebApiMsgPackCliHttpClient 0 1 121,9 μs 1 156,2 μs 83,9844 9,7656 - 264,61 KB
LargeWebApiMsgPackCliHttpClientAsync 0 1 128,2 μs 1 163,0 μs 85,9375 9,7656 - 267,55 KB
LargeWebApiMsgPackCliHttpWebRequest 0 589,9 μs 604,7 μs 60,0586 11,2305 - 186,38 KB
LargeWebApiXmlHttpClient 0 1 007,8 μs 1 041,8 μs 29,2969 9,7656 - 109,99 KB
LargeWebApiXmlHttpClientAsync 0 992,7 μs 1 032,8 μs 29,2969 9,7656 - 109,03 KB
LargeWebApiXmlHttpWebRequest 0 445,5 μs 455,5 μs 30,2734 13,6719 - 97,01 KB
LargeWebApiUtf8JsonHttpClientAsync 0 862,8 μs 909,7 μs 18,5547 6,8359 - 63,89 KB
LargeWebApiUtf8JsonHttpWebRequest 0 345,4 μs 372,6 μs 12,2070 3,4180 - 46,63 KB
LargeWebApiZeroFormatterHttpClient 0 1 035,9 μs 1 074,2 μs 72,2656 7,8125 - 225,52 KB
LargeWebApiZeroFormatterHttpClientAsync 0 1 061,0 μs 1 093,3 μs 72,2656 7,8125 - 226,44 KB
LargeWebApiZeroFormatterHttpWebRequest 0 471,1 μs 498,4 μs 38,0859 10,7422 - 128,25 KB
LargeAspNetCoreJsonNetHttpClient 0 635,3 μs 728,3 μs 17,5781 - - 54,47 KB
LargeAspNetCoreJsonNetHttpClientAsync 0 729,3 μs 861,8 μs 17,5781 - - 55,96 KB
LargeAspNetCoreJsonNetHttpWebRequest 0 429,4 μs 445,8 μs 14,1602 - - 43,87 KB
LargeAspNetCoreMessagePackHttpClient 0 515,0 μs 560,5 μs 12,6953 - - 39,26 KB
LargeAspNetCoreMessagePackHttpClientAsync 0 521,9 μs 556,4 μs 13,6719 - - 42,85 KB
LargeAspNetCoreMessagePackHttpWebRequest 0 388,0 μs 400,9 μs 8,7891 - - 28,29 KB
LargeAspNetCoreMsgPackCliHttpClient 0 831,8 μs 934,1 μs 77,1484 4,8828 - 241,45 KB
LargeAspNetCoreMsgPackCliHttpClientAsync 0 956,7 μs 1 032,6 μs 78,1250 1,9531 - 245,13 KB
LargeAspNetCoreMsgPackCliHttpWebRequest 0 501,2 μs 541,4 μs 51,7578 - - 163,45 KB
LargeAspNetCoreXmlHttpClient 0 749,9 μs 865,8 μs 30,2734 - - 95,37 KB
LargeAspNetCoreXmlHttpClientAsync 0 935,4 μs 970,6 μs 30,2734 - - 94,09 KB
LargeAspNetCoreXmlHttpWebRequest 0 509,8 μs 527,5 μs 27,3438 - - 86,38 KB
LargeAspNetCoreUtf8JsonHttpClient 0 562,7 μs 650,9 μs 11,7188 - - 36,19 KB
LargeAspNetCoreUtf8JsonHttpClientAsync 0 684,5 μs 770,1 μs 12,6953 - - 39,13 KB
LargeAspNetCoreUtf8JsonHttpWebRequest 0 412,5 μs 419,6 μs 7,3242 - - 23,54 KB
LargeAspNetCoreZeroFormatterHttpClient 0 571,5 μs 615,6 μs 38,0859 - - 121,21 KB
LargeAspNetCoreZeroFormatterHttpClientAsync 0 584,2 μs 637,0 μs 38,0859 - - 120,87 KB
LargeAspNetCoreZeroFormatterHttpWebRequest 0 359,7 μs 389,0 μs 8,7891 - - 27,12 KB
SmallWcfText 10 405,3 μs 413,9 μs 10,7422 - - 33,33 KB
SmallWcfWebXml 10 415,1 μs 423,3 μs 11,7188 - - 36,86 KB
SmallWcfWebJson 10 557,9 μs 609,4 μs 11,7188 - - 38,75 KB
SmallWcfBinary 10 400,8 μs 408,5 μs 10,2539 - - 32,46 KB
SmallWcfNetTcp 10 157,5 μs 161,4 μs 3,1738 - - 9,92 KB
SmallWcfMsgPackCli 10 952,3 μs 1 043,0 μs 150,3906 7,8125 - 472,75 KB
SmallWebApiJsonNetHttpClient 10 1 020,6 μs 1 074,3 μs 27,3438 7,8125 - 98,38 KB
SmallWebApiJsonNetHttpClientAsync 10 1 000,9 μs 1 045,6 μs 27,3438 9,7656 - 98,99 KB
SmallWebApiJsonNetHttpWebRequest 10 427,8 μs 435,6 μs 25,8789 11,2305 - 82,71 KB
SmallWebApiMessagePackHttpClient 10 908,3 μs 940,8 μs 19,5313 6,8359 - 67,41 KB
SmallWebApiMessagePackHttpClientAsync 10 917,1 μs 941,3 μs 21,4844 7,8125 - 70,4 KB
SmallWebApiMessagePackHttpWebRequest 10 499,2 μs 513,9 μs 16,1133 5,8594 - 58,45 KB
SmallWebApiMsgPackCliHttpClient 10 1 235,5 μs 1 265,0 μs 93,7500 11,7188 - 294,39 KB
SmallWebApiMsgPackCliHttpClientAsync 10 1 216,5 μs 1 234,6 μs 93,7500 11,7188 - 294,71 KB
SmallWebApiMsgPackCliHttpWebRequest 10 573,8 μs 603,8 μs 57,6172 10,7422 - 199,3 KB
SmallWebApiXmlHttpClient 10 1 065,3 μs 1 107,6 μs 35,1563 5,8594 - 123,97 KB
SmallWebApiXmlHttpClientAsync 10 1 048,5 μs 1 087,9 μs 37,1094 9,7656 - 125,52 KB
SmallWebApiXmlHttpWebRequest 10 526,8 μs 559,1 μs 30,2734 10,7422 - 107,18 KB
SmallWebApiUtf8JsonHttpClient 10 956,0 μs 1 007,4 μs 17,5781 3,9063 - 67,12 KB
SmallWebApiUtf8JsonHttpClientAsync 10 990,9 μs 1 026,6 μs 17,5781 5,8594 - 70,05 KB
SmallWebApiUtf8JsonHttpWebRequest 10 493,1 μs 513,4 μs 16,1133 6,8359 - 58,25 KB
SmallWebApiZeroFormatterHttpClient 10 1 078,4 μs 1 126,8 μs 72,2656 5,8594 - 240,91 KB
SmallWebApiZeroFormatterHttpClientAsync 10 1 090,9 μs 1 134,9 μs 74,2188 9,7656 - 236,5 KB
SmallWebApiZeroFormatterHttpWebRequest 10 582,3 μs 601,0 μs 43,9453 12,6953 - 140,3 KB
SmallAspNetCoreJsonNetHttpClient 10 880,8 μs 945,4 μs 21,4844 - - 68 KB
SmallAspNetCoreJsonNetHttpClientAsync 10 911,8 μs 952,9 μs 22,4609 - - 69,49 KB
SmallAspNetCoreJsonNetHttpWebRequest 10 475,1 μs 490,0 μs 18,0664 - - 55,92 KB
SmallAspNetCoreMessagePackHttpClient 10 630,9 μs 709,1 μs 13,6719 - - 44,07 KB
SmallAspNetCoreMessagePackHttpClientAsync 10 637,5 μs 758,3 μs 14,6484 - - 46,57 KB
SmallAspNetCoreMessagePackHttpWebRequest 10 390,9 μs 417,5 μs 10,2539 - - 32,97 KB
SmallAspNetCoreMsgPackCliHttpClient 10 1 151,0 μs 1 183,6 μs 85,9375 - - 266,94 KB
SmallAspNetCoreMsgPackCliHttpClientAsync 10 1 151,1 μs 1 189,9 μs 85,9375 1,9531 - 268,67 KB
SmallAspNetCoreMsgPackCliHttpWebRequest 10 563,8 μs 581,4 μs 58,1055 0,4883 - 182,12 KB
SmallAspNetCoreXmlHttpClient 10 1 034,2 μs 1 073,7 μs 35,1563 - - 110,05 KB
SmallAspNetCoreXmlHttpClientAsync 10 1 057,3 μs 1 085,7 μs 33,2031 - - 107,46 KB
SmallAspNetCoreXmlHttpWebRequest 10 581,2 μs 609,5 μs 31,2500 - - 97,05 KB
SmallAspNetCoreUtf8JsonHttpClient 10 770,1 μs 850,2 μs 12,6953 - - 41,85 KB
SmallAspNetCoreUtf8JsonHttpClientAsync 10 813,2 μs 898,3 μs 13,6719 - - 43,68 KB
SmallAspNetCoreUtf8JsonHttpWebRequest 10 496,5 μs 512,9 μs 8,7891 - - 28,22 KB
SmallAspNetCoreZeroFormatterHttpClient 10 681,4 μs 769,1 μs 43,9453 - - 136,96 KB
SmallAspNetCoreZeroFormatterHttpClientAsync 10 738,7 μs 897,4 μs 41,9922 - - 132,09 KB
SmallAspNetCoreZeroFormatterHttpWebRequest 10 375,9 μs 394,6 μs 11,7188 - - 37,27 KB
LargeWcfText 10 1 416,8 μs 1 485,2 μs 35,1563 7,8125 - 123,75 KB
LargeWcfWebXml 10 1 465,3 μs 1 532,9 μs 35,1563 7,8125 - 127,42 KB
LargeWcfWebJson 10 1 704,8 μs 1 789,9 μs 42,9688 9,7656 - 143,51 KB
LargeWcfBinary 10 948,7 μs 1 024,2 μs 35,1563 7,8125 - 112,34 KB
LargeWcfNetTcp 10 745,7 μs 775,9 μs 29,2969 - - 90,79 KB
LargeWcfMsgPackCli 10 2 952,6 μs 3 020,3 μs 316,4063 78,1250 - 1 047,96 KB
LargeWebApiJsonNetHttpClient 10 2 357,2 μs 2 422,9 μs 105,4688 15,6250 - 352,19 KB
LargeWebApiJsonNetHttpClientAsync 10 2 250,2 μs 2 350,5 μs 105,4688 19,5313 - 352,43 KB
LargeWebApiJsonNetHttpWebRequest 10 1 906,3 μs 1 922,9 μs 87,8906 11,7188 - 300,53 KB
LargeWebApiMessagePackHttpClient 10 1 900,1 μs 1 928,1 μs 74,2188 11,7188 - 256,83 KB
LargeWebApiMessagePackHttpClientAsync 10 1 899,3 μs 1 918,7 μs 76,1719 13,6719 - 257,94 KB
LargeWebApiMessagePackHttpWebRequest 10 1 033,2 μs 1 156,7 μs 64,4531 11,7188 - 228,96 KB
LargeWebApiMsgPackCliHttpClient 10 3 950,6 μs 4 195,4 μs 343,7500 101,5625 - 1 107,1 KB
LargeWebApiMsgPackCliHttpClientAsync 10 4 116,9 μs 4 250,3 μs 351,5625 101,5625 - 1 109,45 KB
LargeWebApiMsgPackCliHttpWebRequest 10 3 015,2 μs 3 107,9 μs 261,7188 42,9688 - 850,72 KB
LargeWebApiXmlHttpClient 10 2 493,4 μs 2 552,4 μs 132,8125 19,5313 - 421,41 KB
LargeWebApiXmlHttpClientAsync 10 2 480,1 μs 2 564,5 μs 117,1875 23,4375 - 419,88 KB
LargeWebApiXmlHttpWebRequest 10 1 800,1 μs 1 889,4 μs 101,5625 15,6250 - 352,29 KB
LargeWebApiUtf8JsonHttpClientAsync 10 2 038,8 μs 2 092,5 μs 78,1250 15,6250 - 274,06 KB
LargeWebApiUtf8JsonHttpWebRequest 10 1 255,3 μs 1 291,0 μs 68,3594 11,7188 - 235,99 KB
LargeWebApiZeroFormatterHttpClient 10 2 240,9 μs 2 296,1 μs 179,6875 23,4375 - 556,4 KB
LargeWebApiZeroFormatterHttpClientAsync 10 2 231,9 μs 2 296,6 μs 167,9688 31,2500 - 551,97 KB
LargeWebApiZeroFormatterHttpWebRequest 10 1 086,4 μs 1 153,7 μs 140,6250 19,5313 - 453,42 KB
LargeAspNetCoreJsonNetHttpClient 10 2 379,7 μs 2 444,7 μs 101,5625 - - 319,88 KB
LargeAspNetCoreJsonNetHttpClientAsync 10 2 276,5 μs 2 367,5 μs 97,6563 7,8125 - 314,11 KB
LargeAspNetCoreJsonNetHttpWebRequest 10 1 850,3 μs 1 906,1 μs 80,0781 1,9531 - 248,12 KB
LargeAspNetCoreMessagePackHttpClient 10 1 918,2 μs 1 968,2 μs 72,2656 - - 226,34 KB
LargeAspNetCoreMessagePackHttpClientAsync 10 1 887,3 μs 1 928,9 μs 72,2656 3,9063 - 225,47 KB
LargeAspNetCoreMessagePackHttpWebRequest 10 1 004,9 μs 1 092,8 μs 54,6875 - - 170,9 KB
LargeAspNetCoreMsgPackCliHttpClient 10 3 863,2 μs 4 074,2 μs 328,1250 39,0625 - 1 079,12 KB
LargeAspNetCoreMsgPackCliHttpClientAsync 10 3 884,9 μs 4 069,2 μs 320,3125 62,5000 - 1 076,46 KB
LargeAspNetCoreMsgPackCliHttpWebRequest 10 2 934,6 μs 3 032,9 μs 261,7188 - - 810,53 KB
LargeAspNetCoreXmlHttpClient 10 2 441,5 μs 2 564,4 μs 121,0938 15,6250 - 390,76 KB
LargeAspNetCoreXmlHttpClientAsync 10 2 309,3 μs 2 418,6 μs 117,1875 15,6250 - 387,58 KB
LargeAspNetCoreXmlHttpWebRequest 10 1 832,4 μs 1 883,3 μs 87,8906 1,9531 - 275,59 KB
LargeAspNetCoreUtf8JsonHttpClient 10 2 094,2 μs 2 132,6 μs 74,2188 - - 232,16 KB
LargeAspNetCoreUtf8JsonHttpClientAsync 10 2 001,8 μs 2 040,2 μs 74,2188 - - 228,23 KB
LargeAspNetCoreUtf8JsonHttpWebRequest 10 1 395,6 μs 1 437,7 μs 54,6875 - - 172,95 KB
LargeAspNetCoreZeroFormatterHttpClient 10 2 051,5 μs 2 088,9 μs 136,7188 3,9063 - 422,55 KB
LargeAspNetCoreZeroFormatterHttpClientAsync 10 2 042,6 μs 2 085,0 μs 132,8125 3,9063 - 419,67 KB
LargeAspNetCoreZeroFormatterHttpWebRequest 10 1 037,5 μs 1 129,9 μs 103,5156 3,9063 - 325,47 KB
SmallWcfText 100 942,8 μs 1 056,0 μs 27,3438 - - 89,15 KB
SmallWcfWebXml 100 912,8 μs 1 011,6 μs 30,2734 - - 93,31 KB
SmallWcfWebJson 100 1 159,4 μs 1 255,2 μs 29,2969 - - 92,44 KB
SmallWcfBinary 100 815,3 μs 893,2 μs 27,3438 - - 86,43 KB
SmallWcfNetTcp 100 540,2 μs 592,0 μs 18,5547 - - 59,29 KB
SmallWcfMsgPackCli 100 1 335,9 μs 1 456,1 μs 183,5938 27,3438 - 608,38 KB
SmallWebApiJsonNetHttpClient 100 2 083,6 μs 2 130,4 μs 70,3125 7,8125 - 242,81 KB
SmallWebApiJsonNetHttpClientAsync 100 1 984,6 μs 2 042,8 μs 70,3125 7,8125 - 243,21 KB
SmallWebApiJsonNetHttpWebRequest 100 1 171,0 μs 1 260,1 μs 58,5938 9,7656 - 208,64 KB
SmallWebApiMessagePackHttpClient 100 1 212,0 μs 1 231,5 μs 37,1094 9,7656 - 133,02 KB
SmallWebApiMessagePackHttpClientAsync 100 1 271,2 μs 1 424,3 μs 37,1094 5,8594 - 132,95 KB
SmallWebApiMessagePackHttpWebRequest 100 832,0 μs 880,6 μs 36,1328 10,7422 - 117,93 KB
SmallWebApiMsgPackCliHttpClient 100 2 451,0 μs 2 518,3 μs 179,6875 15,6250 - 575,5 KB
SmallWebApiMsgPackCliHttpClientAsync 100 2 306,5 μs 2 411,4 μs 175,7813 19,5313 - 575,75 KB
SmallWebApiMsgPackCliHttpWebRequest 100 1 305,6 μs 1 341,5 μs 113,2813 13,6719 - 386,04 KB
SmallWebApiXmlHttpClient 100 2 150,5 μs 2 200,4 μs 74,2188 7,8125 - 269,46 KB
SmallWebApiXmlHttpClientAsync 100 1 998,5 μs 2 096,1 μs 74,2188 7,8125 - 268,94 KB
SmallWebApiXmlHttpWebRequest 100 1 279,7 μs 1 325,1 μs 68,3594 9,7656 - 242,99 KB
SmallWebApiUtf8JsonHttpClient 100 1 582,7 μs 1 631,7 μs 39,0625 5,8594 - 140,72 KB
SmallWebApiUtf8JsonHttpClientAsync 100 1 652,5 μs 1 770,8 μs 39,0625 7,8125 - 141,04 KB
SmallWebApiUtf8JsonHttpWebRequest 100 755,1 μs 792,2 μs 36,1328 10,7422 - 117,63 KB
SmallWebApiZeroFormatterHttpClient 100 1 350,9 μs 1 422,6 μs 103,5156 11,7188 - 342,53 KB
SmallWebApiZeroFormatterHttpClientAsync 100 1 342,6 μs 1 396,2 μs 99,6094 11,7188 - 340,31 KB
SmallWebApiZeroFormatterHttpWebRequest 100 683,0 μs 706,2 μs 72,2656 10,7422 - 245,19 KB
SmallAspNetCoreJsonNetHttpClient 100 2 069,1 μs 2 128,2 μs 62,5000 - - 200,16 KB
SmallAspNetCoreJsonNetHttpClientAsync 100 1 951,7 μs 2 002,4 μs 66,4063 - - 204,71 KB
SmallAspNetCoreJsonNetHttpWebRequest 100 1 217,3 μs 1 367,3 μs 50,7813 - - 161,44 KB
SmallAspNetCoreMessagePackHttpClient 100 1 065,4 μs 1 133,9 μs 29,2969 - - 93,2 KB
SmallAspNetCoreMessagePackHttpClientAsync 100 1 065,1 μs 1 169,8 μs 29,2969 - - 93,98 KB
SmallAspNetCoreMessagePackHttpWebRequest 100 629,9 μs 668,2 μs 24,4141 - - 76,94 KB
SmallAspNetCoreMsgPackCliHttpClient 100 2 346,8 μs 2 440,4 μs 171,8750 - - 542,28 KB
SmallAspNetCoreMsgPackCliHttpClientAsync 100 2 178,9 μs 2 268,5 μs 171,8750 - - 534,97 KB
SmallAspNetCoreMsgPackCliHttpWebRequest 100 1 499,3 μs 1 571,4 μs 117,1875 1,9531 - 363,42 KB
SmallAspNetCoreXmlHttpClient 100 2 121,8 μs 2 172,4 μs 74,2188 - - 230,88 KB
SmallAspNetCoreXmlHttpClientAsync 100 2 002,2 μs 2 041,1 μs 74,2188 - - 232,82 KB
SmallAspNetCoreXmlHttpWebRequest 100 1 406,0 μs 1 485,5 μs 64,4531 - - 202,55 KB
SmallAspNetCoreUtf8JsonHttpClient 100 1 402,6 μs 1 536,1 μs 35,1563 - - 110,85 KB
SmallAspNetCoreUtf8JsonHttpClientAsync 100 1 596,1 μs 1 766,4 μs 35,1563 - - 112,05 KB
SmallAspNetCoreUtf8JsonHttpWebRequest 100 799,6 μs 828,7 μs 24,4141 - - 76,38 KB
SmallAspNetCoreZeroFormatterHttpClient 100 1 116,5 μs 1 164,2 μs 72,2656 - - 225,11 KB
SmallAspNetCoreZeroFormatterHttpClientAsync 100 1 158,2 μs 1 217,4 μs 70,3125 - - 223,29 KB
SmallAspNetCoreZeroFormatterHttpWebRequest 100 579,0 μs 612,3 μs 41,9922 - - 131,31 KB
LargeWcfText 100 10 306,5 μs 10 611,5 μs 234,3750 125,0000 15,6250 1 260,97 KB
LargeWcfWebXml 100 10 125,9 μs 10 441,0 μs 250,0000 125,0000 15,6250 1 265,46 KB
LargeWcfWebJson 100 12 535,9 μs 12 877,7 μs 328,1250 171,8750 15,6250 1 415,91 KB
LargeWcfBinary 100 6 889,3 μs 7 074,8 μs 242,1875 132,8125 15,6250 1 142,53 KB
LargeWcfNetTcp 100 5 469,9 μs 5 734,8 μs 117,1875 54,6875 - 707,86 KB
LargeWcfMsgPackCli 100 22 791,3 μs 23 427,8 μs 1 718,7500 562,5000 - 6 327,24 KB
LargeWebApiJsonNetHttpClient 100 17 566,7 μs 18 302,4 μs 718,7500 375,0000 31,2500 3 107,27 KB
LargeWebApiJsonNetHttpClientAsync 100 17 516,1 μs 18 712,4 μs 718,7500 375,0000 31,2500 3 104,68 KB
LargeWebApiJsonNetHttpWebRequest 100 14 204,2 μs 14 858,3 μs 687,5000 359,3750 15,6250 2 649,91 KB
LargeWebApiMessagePackHttpClient 100 9 292,9 μs 9 652,5 μs 562,5000 296,8750 31,2500 2 471,18 KB
LargeWebApiMessagePackHttpClientAsync 100 9 372,5 μs 9 955,7 μs 546,8750 281,2500 31,2500 2 468,98 KB
LargeWebApiMessagePackHttpWebRequest 100 7 023,7 μs 7 238,6 μs 539,0625 281,2500 31,2500 2 334,58 KB
LargeWebApiMsgPackCliHttpClient 100 26 691,1 μs 27 635,9 μs 2 781,2500 437,5000 - 8 971,83 KB
LargeWebApiMsgPackCliHttpClientAsync 100 27 301,6 μs 28 104,1 μs 2 718,7500 312,5000 - 8 964,38 KB
LargeWebApiMsgPackCliHttpWebRequest 100 28 510,5 μs 29 251,2 μs 2 156,2500 312,5000 - 7 012,67 KB
LargeWebApiXmlHttpClient 100 16 932,3 μs 17 843,6 μs 687,5000 343,7500 31,2500 2 923,73 KB
LargeWebApiXmlHttpClientAsync 100 17 027,4 μs 17 928,7 μs 718,7500 375,0000 31,2500 2 929,49 KB
LargeWebApiXmlHttpWebRequest 100 12 461,1 μs 12 776,3 μs 703,1250 359,3750 15,6250 2 508,79 KB
LargeWebApiUtf8JsonHttpClientAsync 100 13 971,3 μs 14 304,9 μs 609,3750 343,7500 78,1250 3 675,47 KB
LargeWebApiUtf8JsonHttpWebRequest 100 11 023,6 μs 11 288,5 μs 609,3750 359,3750 78,1250 3 482,26 KB
LargeWebApiZeroFormatterHttpClient 100 10 964,6 μs 11 333,5 μs 765,6250 343,7500 46,8750 3 371,39 KB
LargeWebApiZeroFormatterHttpClientAsync 100 11 121,3 μs 11 440,2 μs 765,6250 406,2500 46,8750 3 371,05 KB
LargeWebApiZeroFormatterHttpWebRequest 100 7 998,7 μs 8 812,0 μs 734,3750 328,1250 46,8750 3 255,86 KB
LargeAspNetCoreJsonNetHttpClient 100 21 906,3 μs 22 576,2 μs 468,7500 250,0000 31,2500 3 203,19 KB
LargeAspNetCoreJsonNetHttpClientAsync 100 21 717,5 μs 22 127,0 μs 531,2500 281,2500 31,2500 3 202,07 KB
LargeAspNetCoreJsonNetHttpWebRequest 100 18 784,1 μs 19 337,5 μs 406,2500 187,5000 - 2 361,35 KB
LargeAspNetCoreMessagePackHttpClient 100 8 699,5 μs 9 226,8 μs 281,2500 156,2500 31,2500 2 289,8 KB
LargeAspNetCoreMessagePackHttpClientAsync 100 8 882,4 μs 9 442,3 μs 421,8750 234,3750 31,2500 2 292,26 KB
LargeAspNetCoreMessagePackHttpWebRequest 100 6 347,1 μs 6 514,6 μs 273,4375 148,4375 23,4375 1 986,16 KB
LargeAspNetCoreMsgPackCliHttpClient 100 25 200,5 μs 26 195,3 μs 1 625,0000 406,2500 - 8 704,53 KB
LargeAspNetCoreMsgPackCliHttpClientAsync 100 24 995,5 μs 25 570,6 μs 1 593,7500 312,5000 - 8 693,94 KB
LargeAspNetCoreMsgPackCliHttpWebRequest 100 26 311,1 μs 27 043,4 μs 1 218,7500 468,7500 - 6 775,73 KB
LargeAspNetCoreXmlHttpClient 100 25 697,8 μs 26 587,6 μs 437,5000 218,7500 31,2500 2 893,75 KB
LargeAspNetCoreXmlHttpClientAsync 100 25 770,5 μs 26 730,3 μs 406,2500 218,7500 31,2500 2 892,88 KB
LargeAspNetCoreXmlHttpWebRequest 100 20 484,6 μs 22 693,2 μs 312,5000 156,2500 - 2 105,34 KB
LargeAspNetCoreUtf8JsonHttpClient 100 13 273,5 μs 13 686,2 μs 375,0000 234,3750 78,1250 3 663,91 KB
LargeAspNetCoreUtf8JsonHttpClientAsync 100 13 432,0 μs 13 901,2 μs 359,3750 234,3750 78,1250 3 663,88 KB
LargeAspNetCoreUtf8JsonHttpWebRequest 100 9 944,2 μs 10 382,7 μs 312,5000 203,1250 62,5000 3 088,47 KB
LargeAspNetCoreZeroFormatterHttpClient 100 9 847,4 μs 10 512,3 μs 406,2500 218,7500 46,8750 2 909,31 KB
LargeAspNetCoreZeroFormatterHttpClientAsync 100 9 890,6 μs 10 254,3 μs 421,8750 250,0000 46,8750 2 911,12 KB
LargeAspNetCoreZeroFormatterHttpWebRequest 100 6 888,7 μs 7 243,7 μs 390,6250 210,9375 46,8750 2 802,42 KB
SmallWcfText 1000 5 091,3 μs 5 333,0 μs 203,1250 54,6875 - 646,88 KB
SmallWcfWebXml 1000 5 170,4 μs 5 273,4 μs 195,3125 54,6875 - 648,61 KB
SmallWcfWebJson 1000 6 099,8 μs 6 294,8 μs 187,5000 39,0625 - 619,48 KB
SmallWcfBinary 1000 4 486,1 μs 4 804,9 μs 187,5000 39,0625 - 621,5 KB
SmallWcfNetTcp 1000 4 070,6 μs 4 243,7 μs 179,6875 39,0625 - 643,88 KB
SmallWcfMsgPackCli 1000 5 262,8 μs 5 447,1 μs 601,5625 171,8750 - 1 872,26 KB
SmallWebApiJsonNetHttpClient 1000 8 703,8 μs 9 127,8 μs 484,3750 187,5000 - 1 544,87 KB
SmallWebApiJsonNetHttpClientAsync 1000 8 681,5 μs 9 036,5 μs 484,3750 187,5000 - 1 543,54 KB
SmallWebApiJsonNetHttpWebRequest 1000 6 954,6 μs 7 082,1 μs 445,3125 140,6250 - 1 403,19 KB
SmallWebApiMessagePackHttpClient 1000 4 084,5 μs 4 484,5 μs 234,3750 62,5000 - 770,84 KB
SmallWebApiMessagePackHttpClientAsync 1000 4 234,1 μs 4 661,6 μs 234,3750 101,5625 - 770,07 KB
SmallWebApiMessagePackHttpWebRequest 1000 3 052,9 μs 3 218,4 μs 218,7500 50,7813 - 700,45 KB
SmallWebApiMsgPackCliHttpClient 1000 11 586,3 μs 11 913,2 μs 1 078,1250 296,8750 - 3 395,91 KB
SmallWebApiMsgPackCliHttpClientAsync 1000 11 734,6 μs 12 014,9 μs 1 093,7500 296,8750 - 3 394,1 KB
SmallWebApiMsgPackCliHttpWebRequest 1000 10 466,6 μs 10 964,3 μs 718,7500 234,3750 - 2 269,57 KB
SmallWebApiXmlHttpClient 1000 8 957,6 μs 9 437,3 μs 468,7500 156,2500 - 1 649,38 KB
SmallWebApiXmlHttpClientAsync 1000 9 080,0 μs 9 525,4 μs 453,1250 156,2500 - 1 647,59 KB
SmallWebApiXmlHttpWebRequest 1000 7 764,3 μs 8 270,7 μs 421,8750 140,6250 - 1 451,44 KB
SmallWebApiUtf8JsonHttpClient 1000 5 008,2 μs 5 230,1 μs 250,0000 78,1250 - 840,26 KB
SmallWebApiUtf8JsonHttpClientAsync 1000 4 981,5 μs 5 222,4 μs 273,4375 101,5625 - 842,22 KB
SmallWebApiUtf8JsonHttpWebRequest 1000 3 526,5 μs 3 561,6 μs 234,3750 70,3125 - 761,92 KB
SmallWebApiZeroFormatterHttpClient 1000 4 074,3 μs 4 389,9 μs 429,6875 210,9375 - 1 346,46 KB
SmallWebApiZeroFormatterHttpClientAsync 1000 4 039,7 μs 4 393,4 μs 421,8750 210,9375 - 1 342,02 KB
SmallWebApiZeroFormatterHttpWebRequest 1000 2 794,2 μs 2 919,8 μs 390,6250 187,5000 - 1 240,37 KB
SmallAspNetCoreJsonNetHttpClient 1000 10 322,9 μs 10 687,6 μs 359,3750 109,3750 - 1 473,25 KB
SmallAspNetCoreJsonNetHttpClientAsync 1000 10 401,2 μs 10 776,3 μs 375,0000 125,0000 - 1 475,8 KB
SmallAspNetCoreJsonNetHttpWebRequest 1000 8 998,8 μs 9 751,7 μs 375,0000 109,3750 - 1 235,5 KB
SmallAspNetCoreMessagePackHttpClient 1000 3 970,5 μs 4 300,8 μs 179,6875 54,6875 - 695,07 KB
SmallAspNetCoreMessagePackHttpClientAsync 1000 3 967,7 μs 4 317,4 μs 171,8750 54,6875 - 695,65 KB
SmallAspNetCoreMessagePackHttpWebRequest 1000 2 990,7 μs 3 056,3 μs 167,9688 7,8125 - 527,22 KB
SmallAspNetCoreMsgPackCliHttpClient 1000 11 072,9 μs 11 383,8 μs 968,7500 203,1250 - 3 286,54 KB
SmallAspNetCoreMsgPackCliHttpClientAsync 1000 11 269,9 μs 11 486,5 μs 953,1250 203,1250 - 3 282,89 KB
SmallAspNetCoreMsgPackCliHttpWebRequest 1000 10 055,8 μs 10 532,7 μs 671,8750 171,8750 - 2 176,11 KB
SmallAspNetCoreXmlHttpClient 1000 15 872,2 μs 16 587,9 μs 406,2500 62,5000 - 1 623,8 KB
SmallAspNetCoreXmlHttpClientAsync 1000 16 132,0 μs 16 742,2 μs 437,5000 31,2500 - 1 623,78 KB
SmallAspNetCoreXmlHttpWebRequest 1000 12 898,5 μs 14 694,2 μs 328,1250 78,1250 - 1 218,43 KB
SmallAspNetCoreUtf8JsonHttpClient 1000 4 489,3 μs 5 041,2 μs 195,3125 62,5000 - 745,89 KB
SmallAspNetCoreUtf8JsonHttpClientAsync 1000 4 834,4 μs 4 987,0 μs 226,5625 70,3125 - 746,11 KB
SmallAspNetCoreUtf8JsonHttpWebRequest 1000 3 584,3 μs 3 676,0 μs 183,5938 7,8125 - 577,3 KB
SmallAspNetCoreZeroFormatterHttpClient 1000 3 279,5 μs 3 447,7 μs 308,5938 125,0000 - 1 122,6 KB
SmallAspNetCoreZeroFormatterHttpClientAsync 1000 3 363,8 μs 3 592,3 μs 308,5938 136,7188 - 1 123,26 KB
SmallAspNetCoreZeroFormatterHttpWebRequest 1000 2 542,6 μs 2 691,8 μs 203,1250 82,0313 - 1 019,71 KB
LargeWcfText 1000 113 203,8 μs 116 349,7 μs 3 062,5000 1 375,0000 625,0000 26 257,81 KB
LargeWcfWebXml 1000 113 749,8 μs 119 653,4 μs 3 000,0000 1 375,0000 625,0000 26 267,92 KB
LargeWcfWebJson 1000 124 571,2 μs 126 913,4 μs 3 562,5000 1 000,0000 375,0000 19 550,39 KB
LargeWcfBinary 1000 75 785,2 μs 77 798,0 μs 2 625,0000 1 062,5000 375,0000 16 826,8 KB
LargeWcfNetTcp 1000 63 496,8 μs 65 131,4 μs 1 437,5000 750,0000 312,5000 15 259,22 KB
LargeWcfMsgPackCli 1000 226 764,2 μs 228 210,0 μs 14 312,5000 2 062,5000 812,5000 63 616,09 KB
LargeWebApiJsonNetHttpClient 1000 146 788,7 μs 150 342,6 μs 6 062,5000 1 000,0000 312,5000 28 004,73 KB
LargeWebApiJsonNetHttpClientAsync 1000 148 252,3 μs 150 701,1 μs 6 125,0000 1 000,0000 312,5000 28 005,47 KB
LargeWebApiJsonNetHttpWebRequest 1000 137 693,6 μs 140 988,9 μs 6 187,5000 1 000,0000 250,0000 24 196,63 KB
LargeWebApiMessagePackHttpClient 1000 76 918,2 μs 79 686,3 μs 5 500,0000 1 187,5000 375,0000 26 612,74 KB
LargeWebApiMessagePackHttpClientAsync 1000 79 844,3 μs 82 522,0 μs 5 500,0000 1 187,5000 375,0000 26 607,16 KB
LargeWebApiMessagePackHttpWebRequest 1000 71 342,8 μs 73 000,7 μs 5 437,5000 1 187,5000 375,0000 25 423,91 KB
LargeWebApiMsgPackCliHttpClient 1000 231 637,3 μs 233 815,8 μs 27 187,5000 1 875,0000 250,0000 87 423,5 KB
LargeWebApiMsgPackCliHttpClientAsync 1000 235 545,0 μs 237 502,2 μs 26 812,5000 1 750,0000 250,0000 87 424,05 KB
LargeWebApiMsgPackCliHttpWebRequest 1000 273 161,6 μs 274 337,6 μs 21 375,0000 1 625,0000 250,0000 68 248,17 KB
LargeWebApiXmlHttpClient 1000 138 851,2 μs 140 807,8 μs 6 500,0000 1 375,0000 500,0000 32 739,53 KB
LargeWebApiXmlHttpClientAsync 1000 137 728,4 μs 139 416,2 μs 6 437,5000 1 250,0000 500,0000 32 737,39 KB
LargeWebApiXmlHttpWebRequest 1000 117 583,8 μs 119 814,8 μs 6 312,5000 1 125,0000 312,5000 27 616,55 KB
LargeWebApiUtf8JsonHttpClientAsync 1000 108 526,5 μs 110 023,5 μs 5 937,5000 1 250,0000 625,0000 36 588,36 KB
LargeWebApiUtf8JsonHttpWebRequest 1000 99 423,4 μs 101 303,8 μs 5 875,0000 1 250,0000 625,0000 34 853,14 KB
LargeWebApiZeroFormatterHttpClient 1000 93 279,3 μs 95 066,0 μs 6 000,0000 1 875,0000 625,0000 34 568,77 KB
LargeWebApiZeroFormatterHttpClientAsync 1000 93 082,5 μs 96 336,2 μs 6 125,0000 1 812,5000 625,0000 34 556,73 KB
LargeWebApiZeroFormatterHttpWebRequest 1000 83 440,5 μs 87 326,7 μs 6 062,5000 1 750,0000 625,0000 35 920,83 KB
LargeAspNetCoreJsonNetHttpClient 1000 190 051,4 μs 193 029,4 μs 4 375,0000 1 187,5000 312,5000 29 453,69 KB
LargeAspNetCoreJsonNetHttpClientAsync 1000 191 288,1 μs 194 703,0 μs 4 312,5000 1 000,0000 312,5000 29 435,33 KB
LargeAspNetCoreJsonNetHttpWebRequest 1000 172 396,6 μs 174 307,9 μs 4 000,0000 750,0000 62,5000 22 879,07 KB
LargeAspNetCoreMessagePackHttpClient 1000 74 707,4 μs 76 628,3 μs 2 937,5000 1 062,5000 375,0000 24 513,18 KB
LargeAspNetCoreMessagePackHttpClientAsync 1000 75 239,7 μs 77 764,9 μs 3 062,5000 875,0000 375,0000 24 503,66 KB
LargeAspNetCoreMessagePackHttpWebRequest 1000 64 765,4 μs 67 297,2 μs 2 750,0000 1 000,0000 312,5000 22 184,38 KB
LargeAspNetCoreMsgPackCliHttpClient 1000 224 174,1 μs 226 700,3 μs 16 000,0000 1 875,0000 500,0000 84 368,61 KB
LargeAspNetCoreMsgPackCliHttpClientAsync 1000 226 491,1 μs 229 350,5 μs 15 625,0000 1 562,5000 250,0000 84 367,02 KB
LargeAspNetCoreMsgPackCliHttpWebRequest 1000 259 125,8 μs 260 689,1 μs 12 437,5000 1 625,0000 250,0000 66 232,65 KB
LargeAspNetCoreXmlHttpClient 1000 187 939,3 μs 191 380,4 μs 4 062,5000 1 062,5000 375,0000 29 287,81 KB
LargeAspNetCoreXmlHttpClientAsync 1000 186 831,9 μs 191 377,0 μs 3 750,0000 1 000,0000 375,0000 29 274,29 KB
LargeAspNetCoreXmlHttpWebRequest 1000 163 545,0 μs 166 214,4 μs 3 312,5000 750,0000 125,0000 21 599,57 KB
LargeAspNetCoreUtf8JsonHttpClient 1000 112 656,4 μs 114 328,7 μs 3 750,0000 1 500,0000 875,0000 35 651,9 KB
LargeAspNetCoreUtf8JsonHttpClientAsync 1000 113 442,3 μs 116 928,0 μs 3 750,0000 1 500,0000 937,5000 35 638,04 KB
LargeAspNetCoreUtf8JsonHttpWebRequest 1000 91 813,6 μs 93 977,9 μs 3 187,5000 1 250,0000 625,0000 31 173,77 KB
LargeAspNetCoreZeroFormatterHttpClient 1000 89 996,3 μs 92 385,9 μs 3 375,0000 1 562,5000 625,0000 31 020,04 KB
LargeAspNetCoreZeroFormatterHttpClientAsync 1000 89 334,9 μs 92 773,4 μs 3 312,5000 1 562,5000 625,0000 31 017,05 KB
LargeAspNetCoreZeroFormatterHttpWebRequest 1000 81 701,0 μs 85 651,5 μs 3 000,0000 1 437,5000 500,0000 32 338,78 KB