Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jtattermusch/9572909ddc091b90871a0c929e317b22 to your computer and use it in GitHub Desktop.
Save jtattermusch/9572909ddc091b90871a0c929e317b22 to your computer and use it in GitHub Desktop.
BEFORE
| Method | BytesToParse | encodedSize | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|----------------- |------------- |------------ |----------:|----------:|----------:|------------:|------------:|------------:|--------------------:|
| ParseRawVarint32 | 10080 | 1 | 42.587 us | 0.8495 us | 1.3957 us | - | - | - | 88 B |
| ParseRawVarint64 | 10080 | 1 | 45.554 us | 0.8631 us | 0.8074 us | - | - | - | 88 B |
| ParseRawVarint32 | 10080 | 2 | 28.323 us | 0.1714 us | 0.1431 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 2 | 25.848 us | 0.2385 us | 0.2231 us | 0.0305 | - | - | 88 B |
| ParseRawVarint32 | 10080 | 3 | 20.259 us | 0.1440 us | 0.1203 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 3 | 24.808 us | 0.2482 us | 0.2073 us | 0.0305 | - | - | 88 B |
| ParseRawVarint32 | 10080 | 4 | 17.403 us | 0.2847 us | 0.2663 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 4 | 22.338 us | 0.2093 us | 0.1855 us | 0.0305 | - | - | 88 B |
| ParseRawVarint32 | 10080 | 5 | 15.288 us | 0.1741 us | 0.1543 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 5 | 21.688 us | 0.1247 us | 0.1167 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 6 | 21.317 us | 0.1854 us | 0.1643 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 7 | 20.995 us | 0.4196 us | 0.3925 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 8 | 20.677 us | 0.2127 us | 0.1776 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 9 | 20.784 us | 0.3234 us | 0.2700 us | 0.0305 | - | - | 88 B |
| ParseRawVarint64 | 10080 | 10 | 20.433 us | 0.1480 us | 0.1384 us | 0.0305 | - | - | 88 B |
| ParseFixed32 | 10080 | ? | 12.097 us | 0.0976 us | 0.0815 us | 0.0305 | - | - | 88 B |
| ParseFixed64 | 10080 | ? | 6.754 us | 0.1340 us | 0.1316 us | 0.0381 | - | - | 88 B |
| ParseRawFloat | 10080 | ? | 10.141 us | 0.0834 us | 0.0740 us | 0.0305 | - | - | 88 B |
| ParseRawDouble | 10080 | ? | 5.818 us | 0.1146 us | 0.1125 us | 0.0381 | - | - | 88 B |
AFTER
BenchmarkDotNet=v0.11.4, OS=macOS Mojave 10.14.6 (18G3020) [Darwin 18.7.0]
Intel Core i7-7567U CPU 3.50GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
.NET Core SDK=3.0.100
[Host] : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
DefaultJob : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
| Method | BytesToParse | encodedSize | Mean | Error | StdDev | Median | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|---------------------------------- |------------- |------------ |----------:|----------:|----------:|----------:|------------:|------------:|------------:|--------------------:|
| ParseRawVarint32_CodedInputStream | 10080 | 1 | 60.206 us | 1.3361 us | 1.2498 us | 59.732 us | - | - | - | 184 B |
| ParseRawVarint32_ParseContext | 10080 | 1 | 40.209 us | 0.1798 us | 0.1501 us | 40.205 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 1 | 50.539 us | 0.7206 us | 0.6741 us | 50.214 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 1 | 46.684 us | 0.2891 us | 0.2414 us | 46.623 us | - | - | - | - |
| ParseRawVarint32_CodedInputStream | 10080 | 2 | 34.887 us | 0.3371 us | 0.3153 us | 34.865 us | 0.0610 | - | - | 184 B |
| ParseRawVarint32_ParseContext | 10080 | 2 | 26.858 us | 0.2962 us | 0.2626 us | 26.729 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 2 | 32.205 us | 0.2986 us | 0.2647 us | 32.122 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 2 | 32.317 us | 0.2829 us | 0.2209 us | 32.293 us | - | - | - | - |
| ParseRawVarint32_CodedInputStream | 10080 | 3 | 23.401 us | 0.2077 us | 0.1841 us | 23.337 us | 0.0610 | - | - | 184 B |
| ParseRawVarint32_ParseContext | 10080 | 3 | 19.718 us | 0.1820 us | 0.1520 us | 19.721 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 3 | 26.057 us | 0.2801 us | 0.2339 us | 26.028 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 3 | 26.161 us | 0.3419 us | 0.3198 us | 26.078 us | - | - | - | - |
| ParseRawVarint32_CodedInputStream | 10080 | 4 | 19.313 us | 0.0898 us | 0.0750 us | 19.313 us | 0.0610 | - | - | 184 B |
| ParseRawVarint32_ParseContext | 10080 | 4 | 18.223 us | 0.1677 us | 0.1486 us | 18.217 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 4 | 22.932 us | 0.2703 us | 0.2396 us | 22.851 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 4 | 22.799 us | 0.1112 us | 0.0929 us | 22.783 us | - | - | - | - |
| ParseRawVarint32_CodedInputStream | 10080 | 5 | 18.677 us | 0.4719 us | 0.5435 us | 18.443 us | 0.0610 | - | - | 184 B |
| ParseRawVarint32_ParseContext | 10080 | 5 | 16.927 us | 0.1420 us | 0.1186 us | 16.889 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 5 | 20.978 us | 0.1443 us | 0.1279 us | 20.922 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 5 | 21.781 us | 0.4325 us | 1.1692 us | 21.304 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 6 | 19.808 us | 0.1435 us | 0.1272 us | 19.804 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 6 | 19.910 us | 0.4876 us | 0.6674 us | 19.663 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 7 | 18.991 us | 0.1813 us | 0.1608 us | 18.952 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 7 | 19.064 us | 0.2787 us | 0.2470 us | 19.018 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 8 | 18.439 us | 0.2083 us | 0.1847 us | 18.384 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 8 | 18.301 us | 0.1620 us | 0.1265 us | 18.266 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 9 | 17.941 us | 0.1010 us | 0.0944 us | 17.963 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 9 | 17.685 us | 0.1960 us | 0.1737 us | 17.651 us | - | - | - | - |
| ParseRawVarint64_CodedInputStream | 10080 | 10 | 17.653 us | 0.0712 us | 0.0595 us | 17.631 us | 0.0610 | - | - | 184 B |
| ParseRawVarint64_ParseContext | 10080 | 10 | 17.219 us | 0.0882 us | 0.0825 us | 17.179 us | - | - | - | - |
| ParseFixed32_CodedInputStream | 10080 | ? | 10.826 us | 0.1526 us | 0.1274 us | 10.810 us | 0.0763 | - | - | 184 B |
| ParseFixed32_ParseContext | 10080 | ? | 7.372 us | 0.0512 us | 0.0454 us | 7.361 us | - | - | - | - |
| ParseFixed64_CodedInputStream | 10080 | ? | 4.063 us | 0.0378 us | 0.0316 us | 4.054 us | 0.0839 | - | - | 184 B |
| ParseFixed64_ParseContext | 10080 | ? | 3.409 us | 0.0183 us | 0.0143 us | 3.407 us | - | - | - | - |
| ParseRawFloat_CodedInputStream | 10080 | ? | 10.704 us | 0.1615 us | 0.1432 us | 10.681 us | 0.0763 | - | - | 184 B |
| ParseRawFloat_ParseContext | 10080 | ? | 11.675 us | 0.0742 us | 0.0694 us | 11.671 us | - | - | - | - |
| ParseRawDouble_CodedInputStream | 10080 | ? | 5.625 us | 0.0402 us | 0.0356 us | 5.613 us | 0.0839 | - | - | 184 B |
| ParseRawDouble_ParseContext | 10080 | ? | 4.083 us | 0.0419 us | 0.0350 us | 4.081 us | - | - | - | - |
BEFORE
BenchmarkDotNet=v0.11.4, OS=macOS Mojave 10.14.6 (18G3020) [Darwin 18.7.0]
Intel Core i7-7567U CPU 3.50GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
.NET Core SDK=3.0.100
[Host] : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
DefaultJob : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
| Method | messageCount | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|--------------------------------------------------------------- |------------- |-------------:|------------:|------------:|------------:|------------:|------------:|--------------------:|
| ManyWrapperFieldsMessage_ParseFromByteArray | ? | 381.41 ns | 8.6719 ns | 24.3170 ns | 0.8879 | - | - | 1864 B |
| ManyPrimitiveFieldsMessage_ParseFromByteArray | ? | 186.74 ns | 2.5298 ns | 2.2426 ns | 0.4880 | - | - | 1024 B |
| EmptyMessage_ParseFromByteArray | ? | 37.50 ns | 0.6567 ns | 0.5821 ns | 0.0533 | - | - | 112 B |
| ManyWrapperFieldsMessage_ParseDelimitedMessagesFromByteArray | 10 | 3,405.47 ns | 48.4968 ns | 40.4970 ns | 8.5106 | - | - | 17848 B |
| ManyPrimitiveFieldsMessage_ParseDelimitedMessagesFromByteArray | 10 | 1,799.61 ns | 22.4263 ns | 20.9775 ns | 4.5033 | - | - | 9448 B |
| ManyWrapperFieldsMessage_ParseDelimitedMessagesFromByteArray | 100 | 33,946.81 ns | 444.3343 ns | 393.8908 ns | 84.6558 | - | - | 177688 B |
| ManyPrimitiveFieldsMessage_ParseDelimitedMessagesFromByteArray | 100 | 18,146.69 ns | 356.7617 ns | 424.6995 ns | 44.6472 | - | - | 93688 B |
AFTER
BenchmarkDotNet=v0.11.4, OS=macOS Mojave 10.14.6 (18G3020) [Darwin 18.7.0]
Intel Core i7-7567U CPU 3.50GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
.NET Core SDK=3.0.100
[Host] : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
DefaultJob : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
| Method | messageCount | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|---------------------------------------------------------------------- |------------- |-------------:|------------:|------------:|------------:|------------:|------------:|--------------------:|
| ManyWrapperFieldsMessage_ParseFromByteArray | ? | 409.88 ns | 7.4969 ns | 6.6458 ns | 0.9341 | - | - | 1960 B |
| ManyWrapperFieldsMessage_ParseFromReadOnlySequence | ? | 381.03 ns | 8.7381 ns | 8.1736 ns | 0.8464 | - | - | 1776 B |
| ManyPrimitiveFieldsMessage_ParseFromByteArray | ? | 251.87 ns | 4.6516 ns | 4.1235 ns | 0.5336 | - | - | 1120 B |
| ManyPrimitiveFieldsMessage_ParseFromReadOnlySequence | ? | 223.52 ns | 4.4897 ns | 6.4390 ns | 0.4461 | - | - | 936 B |
| EmptyMessage_ParseFromByteArray | ? | 106.58 ns | 0.9453 ns | 0.8380 ns | 0.0991 | - | - | 208 B |
| EmptyMessage_ParseFromReadOnlySequence | ? | 71.74 ns | 1.0780 ns | 1.0084 ns | 0.0113 | - | - | 24 B |
| ManyWrapperFieldsMessage_ParseDelimitedMessagesFromByteArray | 10 | 3,906.78 ns | 41.3674 ns | 36.6711 ns | 8.5526 | - | - | 17944 B |
| ManyWrapperFieldsMessage_ParseDelimitedMessagesFromReadOnlySequence | 10 | 3,483.34 ns | 39.6573 ns | 37.0955 ns | 8.4648 | - | - | 17760 B |
| ManyPrimitiveFieldsMessage_ParseDelimitedMessagesFromByteArray | 10 | 2,235.63 ns | 21.6903 ns | 19.2279 ns | 4.5471 | - | - | 9544 B |
| ManyPrimitiveFieldsMessage_ParseDelimitedMessagesFromReadOnlySequence | 10 | 1,820.10 ns | 25.1990 ns | 22.3383 ns | 4.4613 | - | - | 9360 B |
| ManyWrapperFieldsMessage_ParseDelimitedMessagesFromByteArray | 100 | 39,119.34 ns | 493.0260 ns | 461.1768 ns | 84.7168 | - | - | 177784 B |
| ManyWrapperFieldsMessage_ParseDelimitedMessagesFromReadOnlySequence | 100 | 36,101.14 ns | 678.6854 ns | 634.8427 ns | 84.6558 | - | - | 177600 B |
| ManyPrimitiveFieldsMessage_ParseDelimitedMessagesFromByteArray | 100 | 22,013.79 ns | 278.3219 ns | 260.3425 ns | 44.7083 | - | - | 93784 B |
| ManyPrimitiveFieldsMessage_ParseDelimitedMessagesFromReadOnlySequence | 100 | 18,053.55 ns | 299.3745 ns | 280.0351 ns | 44.6167 | - | - | 93600 B |
BEFORE
BenchmarkDotNet=v0.11.4, OS=macOS Mojave 10.14.6 (18G3020) [Darwin 18.7.0]
Intel Core i7-7567U CPU 3.50GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
.NET Core SDK=3.0.100
[Host] : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
DefaultJob : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
| Method | Dataset | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|------------------- |----------------- |---------:|----------:|----------:|------------:|------------:|------------:|--------------------:|
| WriteToStream | goog_msg1_proto3 | 755.8 ns | 15.038 ns | 21.567 ns | 1.9836 | - | - | 4168 B |
| ToByteArray | goog_msg1_proto3 | 648.5 ns | 4.543 ns | 3.794 ns | 0.1411 | - | - | 296 B |
| ParseFromByteArray | goog_msg1_proto3 | 550.9 ns | 4.938 ns | 4.123 ns | 0.4606 | - | - | 968 B |
| ParseFromStream | goog_msg1_proto3 | 823.1 ns | 16.239 ns | 15.190 ns | 2.4233 | - | - | 5088 B |
AFTER
BenchmarkDotNet=v0.11.4, OS=macOS Mojave 10.14.6 (18G3020) [Darwin 18.7.0]
Intel Core i7-7567U CPU 3.50GHz (Kaby Lake), 1 CPU, 4 logical and 2 physical cores
.NET Core SDK=3.0.100
[Host] : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
DefaultJob : .NET Core 2.1.15 (CoreCLR 4.6.28325.01, CoreFX 4.6.28327.02), 64bit RyuJIT
| Method | Dataset | Mean | Error | StdDev | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
|------------------- |----------------- |---------:|----------:|----------:|------------:|------------:|------------:|--------------------:|
| WriteToStream | goog_msg1_proto3 | 728.8 ns | 13.711 ns | 15.239 ns | 1.9836 | - | - | 4168 B |
| ToByteArray | goog_msg1_proto3 | 657.4 ns | 11.347 ns | 10.614 ns | 0.1411 | - | - | 296 B |
| ParseFromByteArray | goog_msg1_proto3 | 638.6 ns | 7.461 ns | 6.614 ns | 0.5074 | - | - | 1064 B |
| ParseFromStream | goog_msg1_proto3 | 971.1 ns | 8.752 ns | 7.309 ns | 2.4681 | - | - | 5184 B |
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment