You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Aleksey Pesternikov (JIRA)" <ji...@apache.org> on 2014/04/28 18:20:16 UTC
[jira] [Comment Edited] (THRIFT-2502) Optimize go implementations
of binary and compact protocols for speed
[ https://issues.apache.org/jira/browse/THRIFT-2502?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13983154#comment-13983154 ]
Aleksey Pesternikov edited comment on THRIFT-2502 at 4/28/14 4:19 PM:
----------------------------------------------------------------------
microbenchmarks before proto modifications:
{noformat}
BenchmarkBinaryBool_0 2000000 886 ns/op 48 B/op 6 allocs/op
BenchmarkBinaryByte_0 1000000 1110 ns/op 64 B/op 8 allocs/op
BenchmarkBinaryI16_0 2000000 931 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryI32_0 1000000 1030 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryI64_0 1000000 1541 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryDouble_0 1000000 1694 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryString_0 1000000 1918 ns/op 344 B/op 13 allocs/op
BenchmarkBinaryBinary_0 5000000 603 ns/op 160 B/op 1 allocs/op
BenchmarkBinaryBool_1 1000000 1058 ns/op 48 B/op 6 allocs/op
BenchmarkBinaryByte_1 1000000 1288 ns/op 64 B/op 8 allocs/op
BenchmarkBinaryI16_1 1000000 1159 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryI32_1 1000000 1261 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryI64_1 1000000 1804 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryDouble_1 1000000 1969 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryString_1 1000000 2216 ns/op 344 B/op 13 allocs/op
BenchmarkBinaryBinary_1 5000000 727 ns/op 160 B/op 1 allocs/op
BenchmarkBinaryBool_2 1000000 1516 ns/op 192 B/op 10 allocs/op
BenchmarkBinaryByte_2 1000000 1822 ns/op 208 B/op 12 allocs/op
BenchmarkBinaryI16_2 1000000 1615 ns/op 168 B/op 5 allocs/op
BenchmarkBinaryI32_2 1000000 1736 ns/op 184 B/op 5 allocs/op
BenchmarkBinaryI64_2 1000000 2310 ns/op 248 B/op 5 allocs/op
BenchmarkBinaryDouble_2 1000000 2441 ns/op 264 B/op 5 allocs/op
BenchmarkBinaryString_2 1000000 2676 ns/op 584 B/op 17 allocs/op
BenchmarkBinaryBinary_2 1000000 1189 ns/op 448 B/op 5 allocs/op
BenchmarkCompactBool_0 1000000 1033 ns/op 96 B/op 12 allocs/op
BenchmarkCompactByte_0 1000000 1339 ns/op 128 B/op 16 allocs/op
BenchmarkCompactI16_0 1000000 2527 ns/op 200 B/op 25 allocs/op
BenchmarkCompactI32_0 500000 3331 ns/op 264 B/op 33 allocs/op
BenchmarkCompactI64_0 500000 6641 ns/op 664 B/op 70 allocs/op
BenchmarkCompactDouble0 500000 3573 ns/op 240 B/op 30 allocs/op
BenchmarkCompactString0 1000000 2716 ns/op 432 B/op 24 allocs/op
BenchmarkCompactBinary0 2000000 804 ns/op 184 B/op 4 allocs/op
BenchmarkCompactBool_1 1000000 1210 ns/op 96 B/op 12 allocs/op
BenchmarkCompactByte_1 1000000 1511 ns/op 128 B/op 16 allocs/op
BenchmarkCompactI16_1 1000000 2834 ns/op 200 B/op 25 allocs/op
BenchmarkCompactI32_1 500000 3598 ns/op 264 B/op 33 allocs/op
BenchmarkCompactI64_1 500000 7338 ns/op 664 B/op 70 allocs/op
BenchmarkCompactDouble1 500000 3832 ns/op 240 B/op 30 allocs/op
BenchmarkCompactString1 1000000 2947 ns/op 432 B/op 24 allocs/op
BenchmarkCompactBinary1 2000000 902 ns/op 184 B/op 4 allocs/op
BenchmarkCompactBool_2 1000000 1576 ns/op 232 B/op 16 allocs/op
BenchmarkCompactByte_2 1000000 1867 ns/op 264 B/op 20 allocs/op
BenchmarkCompactI16_2 500000 3226 ns/op 344 B/op 29 allocs/op
BenchmarkCompactI32_2 500000 4035 ns/op 424 B/op 37 allocs/op
BenchmarkCompactI64_2 200000 7665 ns/op 856 B/op 74 allocs/op
BenchmarkCompactDouble2 500000 4250 ns/op 496 B/op 34 allocs/op
BenchmarkCompactString2 500000 3416 ns/op 656 B/op 28 allocs/op
BenchmarkCompactBinary2 1000000 1397 ns/op 472 B/op 8 allocs/op
{noformat}
After modifications:
{noformat}
BenchmarkBinaryBool_0 5000000 335 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryByte_0 5000000 388 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI16_0 5000000 671 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI32_0 2000000 752 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI64_0 1000000 1191 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryDouble_0 1000000 1350 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryString_0 1000000 1145 ns/op 112 B/op 4 allocs/op
BenchmarkBinaryBinary_0 5000000 584 ns/op 160 B/op 1 allocs/op
BenchmarkBinaryBool_1 5000000 633 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryByte_1 2000000 758 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI16_1 2000000 863 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI32_1 2000000 947 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI64_1 1000000 1413 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryDouble_1 1000000 1556 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryString_1 1000000 1404 ns/op 112 B/op 4 allocs/op
BenchmarkBinaryBinary_1 5000000 677 ns/op 160 B/op 1 allocs/op
BenchmarkBinaryBool_2 5000000 518 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryByte_2 5000000 582 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI16_2 2000000 984 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI32_2 1000000 1095 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI64_2 1000000 1576 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryDouble_2 1000000 1758 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryString_2 1000000 1522 ns/op 112 B/op 4 allocs/op
BenchmarkBinaryBinary_2 2000000 771 ns/op 160 B/op 1 allocs/op
BenchmarkCompactBool_0 5000000 304 ns/op 0 B/op 0 allocs/op
BenchmarkCompactByte_0 5000000 384 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI16_0 5000000 675 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI32_0 2000000 778 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI64_0 1000000 1442 ns/op 0 B/op 0 allocs/op
BenchmarkCompactDouble0 1000000 1490 ns/op 0 B/op 0 allocs/op
BenchmarkCompactString0 2000000 965 ns/op 112 B/op 4 allocs/op
BenchmarkCompactBinary0 5000000 571 ns/op 160 B/op 1 allocs/op
BenchmarkCompactBool_1 5000000 589 ns/op 0 B/op 0 allocs/op
BenchmarkCompactByte_1 5000000 735 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI16_1 1000000 1136 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI32_1 1000000 1414 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI64_1 1000000 2684 ns/op 0 B/op 0 allocs/op
BenchmarkCompactDouble1 1000000 1663 ns/op 0 B/op 0 allocs/op
BenchmarkCompactString1 1000000 1266 ns/op 112 B/op 4 allocs/op
BenchmarkCompactBinary1 5000000 694 ns/op 160 B/op 1 allocs/op
BenchmarkCompactBool_2 5000000 477 ns/op 0 B/op 0 allocs/op
BenchmarkCompactByte_2 5000000 571 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI16_2 2000000 970 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI32_2 1000000 1111 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI64_2 1000000 1922 ns/op 0 B/op 0 allocs/op
BenchmarkCompactDouble2 1000000 1870 ns/op 0 B/op 0 allocs/op
BenchmarkCompactString2 1000000 1208 ns/op 112 B/op 4 allocs/op
BenchmarkCompactBinary2 2000000 756 ns/op 160 B/op 1 allocs/op
{noformat}
Net effect:
{noformat}
benchmark old ns/op new ns/op delta
BenchmarkBinaryBool_0 886 335 -62.19%
BenchmarkBinaryByte_0 1110 388 -65.05%
BenchmarkBinaryI16_0 931 671 -27.93%
BenchmarkBinaryI32_0 1030 752 -26.99%
BenchmarkBinaryI64_0 1541 1191 -22.71%
BenchmarkBinaryDouble_0 1694 1350 -20.31%
BenchmarkBinaryString_0 1918 1145 -40.30%
BenchmarkBinaryBinary_0 603 584 -3.15%
BenchmarkBinaryBool_1 1058 633 -40.17%
BenchmarkBinaryByte_1 1288 758 -41.15%
BenchmarkBinaryI16_1 1159 863 -25.54%
BenchmarkBinaryI32_1 1261 947 -24.90%
BenchmarkBinaryI64_1 1804 1413 -21.67%
BenchmarkBinaryDouble_1 1969 1556 -20.98%
BenchmarkBinaryString_1 2216 1404 -36.64%
BenchmarkBinaryBinary_1 727 677 -6.88%
BenchmarkBinaryBool_2 1516 518 -65.83%
BenchmarkBinaryByte_2 1822 582 -68.06%
BenchmarkBinaryI16_2 1615 984 -39.07%
BenchmarkBinaryI32_2 1736 1095 -36.92%
BenchmarkBinaryI64_2 2310 1576 -31.77%
BenchmarkBinaryDouble_2 2441 1758 -27.98%
BenchmarkBinaryString_2 2676 1522 -43.12%
BenchmarkBinaryBinary_2 1189 771 -35.16%
BenchmarkCompactBool_0 1033 304 -70.57%
BenchmarkCompactByte_0 1339 384 -71.32%
BenchmarkCompactI16_0 2527 675 -73.29%
BenchmarkCompactI32_0 3331 778 -76.64%
BenchmarkCompactI64_0 6641 1442 -78.29%
BenchmarkCompactDouble0 3573 1490 -58.30%
BenchmarkCompactString0 2716 965 -64.47%
BenchmarkCompactBinary0 804 571 -28.98%
BenchmarkCompactBool_1 1210 589 -51.32%
BenchmarkCompactByte_1 1511 735 -51.36%
BenchmarkCompactI16_1 2834 1136 -59.92%
BenchmarkCompactI32_1 3598 1414 -60.70%
BenchmarkCompactI64_1 7338 2684 -63.42%
BenchmarkCompactDouble1 3832 1663 -56.60%
BenchmarkCompactString1 2947 1266 -57.04%
BenchmarkCompactBinary1 902 694 -23.06%
BenchmarkCompactBool_2 1576 477 -69.73%
BenchmarkCompactByte_2 1867 571 -69.42%
BenchmarkCompactI16_2 3226 970 -69.93%
BenchmarkCompactI32_2 4035 1111 -72.47%
BenchmarkCompactI64_2 7665 1922 -74.92%
BenchmarkCompactDouble2 4250 1870 -56.00%
BenchmarkCompactString2 3416 1208 -64.64%
BenchmarkCompactBinary2 1397 756 -45.88%
benchmark old allocs new allocs delta
BenchmarkBinaryBool_0 6 0 -100.00%
BenchmarkBinaryByte_0 8 0 -100.00%
BenchmarkBinaryI16_0 1 0 -100.00%
BenchmarkBinaryI32_0 1 0 -100.00%
BenchmarkBinaryI64_0 1 0 -100.00%
BenchmarkBinaryDouble_0 1 0 -100.00%
BenchmarkBinaryString_0 13 4 -69.23%
BenchmarkBinaryBinary_0 1 1 0.00%
BenchmarkBinaryBool_1 6 0 -100.00%
BenchmarkBinaryByte_1 8 0 -100.00%
BenchmarkBinaryI16_1 1 0 -100.00%
BenchmarkBinaryI32_1 1 0 -100.00%
BenchmarkBinaryI64_1 1 0 -100.00%
BenchmarkBinaryDouble_1 1 0 -100.00%
BenchmarkBinaryString_1 13 4 -69.23%
BenchmarkBinaryBinary_1 1 1 0.00%
BenchmarkBinaryBool_2 10 0 -100.00%
BenchmarkBinaryByte_2 12 0 -100.00%
BenchmarkBinaryI16_2 5 0 -100.00%
BenchmarkBinaryI32_2 5 0 -100.00%
BenchmarkBinaryI64_2 5 0 -100.00%
BenchmarkBinaryDouble_2 5 0 -100.00%
BenchmarkBinaryString_2 17 4 -76.47%
BenchmarkBinaryBinary_2 5 1 -80.00%
BenchmarkCompactBool_0 12 0 -100.00%
BenchmarkCompactByte_0 16 0 -100.00%
BenchmarkCompactI16_0 25 0 -100.00%
BenchmarkCompactI32_0 33 0 -100.00%
BenchmarkCompactI64_0 70 0 -100.00%
BenchmarkCompactDouble0 30 0 -100.00%
BenchmarkCompactString0 24 4 -83.33%
BenchmarkCompactBinary0 4 1 -75.00%
BenchmarkCompactBool_1 12 0 -100.00%
BenchmarkCompactByte_1 16 0 -100.00%
BenchmarkCompactI16_1 25 0 -100.00%
BenchmarkCompactI32_1 33 0 -100.00%
BenchmarkCompactI64_1 70 0 -100.00%
BenchmarkCompactDouble1 30 0 -100.00%
BenchmarkCompactString1 24 4 -83.33%
BenchmarkCompactBinary1 4 1 -75.00%
BenchmarkCompactBool_2 16 0 -100.00%
BenchmarkCompactByte_2 20 0 -100.00%
BenchmarkCompactI16_2 29 0 -100.00%
BenchmarkCompactI32_2 37 0 -100.00%
BenchmarkCompactI64_2 74 0 -100.00%
BenchmarkCompactDouble2 34 0 -100.00%
BenchmarkCompactString2 28 4 -85.71%
BenchmarkCompactBinary2 8 1 -87.50%
benchmark old bytes new bytes delta
BenchmarkBinaryBool_0 48 0 -100.00%
BenchmarkBinaryByte_0 64 0 -100.00%
BenchmarkBinaryI16_0 8 0 -100.00%
BenchmarkBinaryI32_0 8 0 -100.00%
BenchmarkBinaryI64_0 8 0 -100.00%
BenchmarkBinaryDouble_0 8 0 -100.00%
BenchmarkBinaryString_0 344 112 -67.44%
BenchmarkBinaryBinary_0 160 160 0.00%
BenchmarkBinaryBool_1 48 0 -100.00%
BenchmarkBinaryByte_1 64 0 -100.00%
BenchmarkBinaryI16_1 8 0 -100.00%
BenchmarkBinaryI32_1 8 0 -100.00%
BenchmarkBinaryI64_1 8 0 -100.00%
BenchmarkBinaryDouble_1 8 0 -100.00%
BenchmarkBinaryString_1 344 112 -67.44%
BenchmarkBinaryBinary_1 160 160 0.00%
BenchmarkBinaryBool_2 192 0 -100.00%
BenchmarkBinaryByte_2 208 0 -100.00%
BenchmarkBinaryI16_2 168 0 -100.00%
BenchmarkBinaryI32_2 184 0 -100.00%
BenchmarkBinaryI64_2 248 0 -100.00%
BenchmarkBinaryDouble_2 264 0 -100.00%
BenchmarkBinaryString_2 584 112 -80.82%
BenchmarkBinaryBinary_2 448 160 -64.29%
BenchmarkCompactBool_0 96 0 -100.00%
BenchmarkCompactByte_0 128 0 -100.00%
BenchmarkCompactI16_0 200 0 -100.00%
BenchmarkCompactI32_0 264 0 -100.00%
BenchmarkCompactI64_0 664 0 -100.00%
BenchmarkCompactDouble0 240 0 -100.00%
BenchmarkCompactString0 432 112 -74.07%
BenchmarkCompactBinary0 184 160 -13.04%
BenchmarkCompactBool_1 96 0 -100.00%
BenchmarkCompactByte_1 128 0 -100.00%
BenchmarkCompactI16_1 200 0 -100.00%
BenchmarkCompactI32_1 264 0 -100.00%
BenchmarkCompactI64_1 664 0 -100.00%
BenchmarkCompactDouble1 240 0 -100.00%
BenchmarkCompactString1 432 112 -74.07%
BenchmarkCompactBinary1 184 160 -13.04%
BenchmarkCompactBool_2 232 0 -100.00%
BenchmarkCompactByte_2 264 0 -100.00%
BenchmarkCompactI16_2 344 0 -100.00%
BenchmarkCompactI32_2 424 0 -100.00%
BenchmarkCompactI64_2 856 0 -100.00%
BenchmarkCompactDouble2 496 0 -100.00%
BenchmarkCompactString2 656 112 -82.93%
BenchmarkCompactBinary2 472 160 -66.10%
{noformat}
was (Author: apesternikov):
microbenchmarks without proto modifications:
{noformat}
BenchmarkBinaryBool_0 2000000 886 ns/op 48 B/op 6 allocs/op
BenchmarkBinaryByte_0 1000000 1110 ns/op 64 B/op 8 allocs/op
BenchmarkBinaryI16_0 2000000 931 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryI32_0 1000000 1030 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryI64_0 1000000 1541 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryDouble_0 1000000 1694 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryString_0 1000000 1918 ns/op 344 B/op 13 allocs/op
BenchmarkBinaryBinary_0 5000000 603 ns/op 160 B/op 1 allocs/op
BenchmarkBinaryBool_1 1000000 1058 ns/op 48 B/op 6 allocs/op
BenchmarkBinaryByte_1 1000000 1288 ns/op 64 B/op 8 allocs/op
BenchmarkBinaryI16_1 1000000 1159 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryI32_1 1000000 1261 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryI64_1 1000000 1804 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryDouble_1 1000000 1969 ns/op 8 B/op 1 allocs/op
BenchmarkBinaryString_1 1000000 2216 ns/op 344 B/op 13 allocs/op
BenchmarkBinaryBinary_1 5000000 727 ns/op 160 B/op 1 allocs/op
BenchmarkBinaryBool_2 1000000 1516 ns/op 192 B/op 10 allocs/op
BenchmarkBinaryByte_2 1000000 1822 ns/op 208 B/op 12 allocs/op
BenchmarkBinaryI16_2 1000000 1615 ns/op 168 B/op 5 allocs/op
BenchmarkBinaryI32_2 1000000 1736 ns/op 184 B/op 5 allocs/op
BenchmarkBinaryI64_2 1000000 2310 ns/op 248 B/op 5 allocs/op
BenchmarkBinaryDouble_2 1000000 2441 ns/op 264 B/op 5 allocs/op
BenchmarkBinaryString_2 1000000 2676 ns/op 584 B/op 17 allocs/op
BenchmarkBinaryBinary_2 1000000 1189 ns/op 448 B/op 5 allocs/op
BenchmarkCompactBool_0 1000000 1033 ns/op 96 B/op 12 allocs/op
BenchmarkCompactByte_0 1000000 1339 ns/op 128 B/op 16 allocs/op
BenchmarkCompactI16_0 1000000 2527 ns/op 200 B/op 25 allocs/op
BenchmarkCompactI32_0 500000 3331 ns/op 264 B/op 33 allocs/op
BenchmarkCompactI64_0 500000 6641 ns/op 664 B/op 70 allocs/op
BenchmarkCompactDouble0 500000 3573 ns/op 240 B/op 30 allocs/op
BenchmarkCompactString0 1000000 2716 ns/op 432 B/op 24 allocs/op
BenchmarkCompactBinary0 2000000 804 ns/op 184 B/op 4 allocs/op
BenchmarkCompactBool_1 1000000 1210 ns/op 96 B/op 12 allocs/op
BenchmarkCompactByte_1 1000000 1511 ns/op 128 B/op 16 allocs/op
BenchmarkCompactI16_1 1000000 2834 ns/op 200 B/op 25 allocs/op
BenchmarkCompactI32_1 500000 3598 ns/op 264 B/op 33 allocs/op
BenchmarkCompactI64_1 500000 7338 ns/op 664 B/op 70 allocs/op
BenchmarkCompactDouble1 500000 3832 ns/op 240 B/op 30 allocs/op
BenchmarkCompactString1 1000000 2947 ns/op 432 B/op 24 allocs/op
BenchmarkCompactBinary1 2000000 902 ns/op 184 B/op 4 allocs/op
BenchmarkCompactBool_2 1000000 1576 ns/op 232 B/op 16 allocs/op
BenchmarkCompactByte_2 1000000 1867 ns/op 264 B/op 20 allocs/op
BenchmarkCompactI16_2 500000 3226 ns/op 344 B/op 29 allocs/op
BenchmarkCompactI32_2 500000 4035 ns/op 424 B/op 37 allocs/op
BenchmarkCompactI64_2 200000 7665 ns/op 856 B/op 74 allocs/op
BenchmarkCompactDouble2 500000 4250 ns/op 496 B/op 34 allocs/op
BenchmarkCompactString2 500000 3416 ns/op 656 B/op 28 allocs/op
BenchmarkCompactBinary2 1000000 1397 ns/op 472 B/op 8 allocs/op
{noformat}
After modifications:
{noformat}
BenchmarkBinaryBool_0 5000000 335 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryByte_0 5000000 388 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI16_0 5000000 671 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI32_0 2000000 752 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI64_0 1000000 1191 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryDouble_0 1000000 1350 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryString_0 1000000 1145 ns/op 112 B/op 4 allocs/op
BenchmarkBinaryBinary_0 5000000 584 ns/op 160 B/op 1 allocs/op
BenchmarkBinaryBool_1 5000000 633 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryByte_1 2000000 758 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI16_1 2000000 863 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI32_1 2000000 947 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI64_1 1000000 1413 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryDouble_1 1000000 1556 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryString_1 1000000 1404 ns/op 112 B/op 4 allocs/op
BenchmarkBinaryBinary_1 5000000 677 ns/op 160 B/op 1 allocs/op
BenchmarkBinaryBool_2 5000000 518 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryByte_2 5000000 582 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI16_2 2000000 984 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI32_2 1000000 1095 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryI64_2 1000000 1576 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryDouble_2 1000000 1758 ns/op 0 B/op 0 allocs/op
BenchmarkBinaryString_2 1000000 1522 ns/op 112 B/op 4 allocs/op
BenchmarkBinaryBinary_2 2000000 771 ns/op 160 B/op 1 allocs/op
BenchmarkCompactBool_0 5000000 304 ns/op 0 B/op 0 allocs/op
BenchmarkCompactByte_0 5000000 384 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI16_0 5000000 675 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI32_0 2000000 778 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI64_0 1000000 1442 ns/op 0 B/op 0 allocs/op
BenchmarkCompactDouble0 1000000 1490 ns/op 0 B/op 0 allocs/op
BenchmarkCompactString0 2000000 965 ns/op 112 B/op 4 allocs/op
BenchmarkCompactBinary0 5000000 571 ns/op 160 B/op 1 allocs/op
BenchmarkCompactBool_1 5000000 589 ns/op 0 B/op 0 allocs/op
BenchmarkCompactByte_1 5000000 735 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI16_1 1000000 1136 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI32_1 1000000 1414 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI64_1 1000000 2684 ns/op 0 B/op 0 allocs/op
BenchmarkCompactDouble1 1000000 1663 ns/op 0 B/op 0 allocs/op
BenchmarkCompactString1 1000000 1266 ns/op 112 B/op 4 allocs/op
BenchmarkCompactBinary1 5000000 694 ns/op 160 B/op 1 allocs/op
BenchmarkCompactBool_2 5000000 477 ns/op 0 B/op 0 allocs/op
BenchmarkCompactByte_2 5000000 571 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI16_2 2000000 970 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI32_2 1000000 1111 ns/op 0 B/op 0 allocs/op
BenchmarkCompactI64_2 1000000 1922 ns/op 0 B/op 0 allocs/op
BenchmarkCompactDouble2 1000000 1870 ns/op 0 B/op 0 allocs/op
BenchmarkCompactString2 1000000 1208 ns/op 112 B/op 4 allocs/op
BenchmarkCompactBinary2 2000000 756 ns/op 160 B/op 1 allocs/op
{noformat}
Net effect:
{noformat}
benchmark old ns/op new ns/op delta
BenchmarkBinaryBool_0 886 335 -62.19%
BenchmarkBinaryByte_0 1110 388 -65.05%
BenchmarkBinaryI16_0 931 671 -27.93%
BenchmarkBinaryI32_0 1030 752 -26.99%
BenchmarkBinaryI64_0 1541 1191 -22.71%
BenchmarkBinaryDouble_0 1694 1350 -20.31%
BenchmarkBinaryString_0 1918 1145 -40.30%
BenchmarkBinaryBinary_0 603 584 -3.15%
BenchmarkBinaryBool_1 1058 633 -40.17%
BenchmarkBinaryByte_1 1288 758 -41.15%
BenchmarkBinaryI16_1 1159 863 -25.54%
BenchmarkBinaryI32_1 1261 947 -24.90%
BenchmarkBinaryI64_1 1804 1413 -21.67%
BenchmarkBinaryDouble_1 1969 1556 -20.98%
BenchmarkBinaryString_1 2216 1404 -36.64%
BenchmarkBinaryBinary_1 727 677 -6.88%
BenchmarkBinaryBool_2 1516 518 -65.83%
BenchmarkBinaryByte_2 1822 582 -68.06%
BenchmarkBinaryI16_2 1615 984 -39.07%
BenchmarkBinaryI32_2 1736 1095 -36.92%
BenchmarkBinaryI64_2 2310 1576 -31.77%
BenchmarkBinaryDouble_2 2441 1758 -27.98%
BenchmarkBinaryString_2 2676 1522 -43.12%
BenchmarkBinaryBinary_2 1189 771 -35.16%
BenchmarkCompactBool_0 1033 304 -70.57%
BenchmarkCompactByte_0 1339 384 -71.32%
BenchmarkCompactI16_0 2527 675 -73.29%
BenchmarkCompactI32_0 3331 778 -76.64%
BenchmarkCompactI64_0 6641 1442 -78.29%
BenchmarkCompactDouble0 3573 1490 -58.30%
BenchmarkCompactString0 2716 965 -64.47%
BenchmarkCompactBinary0 804 571 -28.98%
BenchmarkCompactBool_1 1210 589 -51.32%
BenchmarkCompactByte_1 1511 735 -51.36%
BenchmarkCompactI16_1 2834 1136 -59.92%
BenchmarkCompactI32_1 3598 1414 -60.70%
BenchmarkCompactI64_1 7338 2684 -63.42%
BenchmarkCompactDouble1 3832 1663 -56.60%
BenchmarkCompactString1 2947 1266 -57.04%
BenchmarkCompactBinary1 902 694 -23.06%
BenchmarkCompactBool_2 1576 477 -69.73%
BenchmarkCompactByte_2 1867 571 -69.42%
BenchmarkCompactI16_2 3226 970 -69.93%
BenchmarkCompactI32_2 4035 1111 -72.47%
BenchmarkCompactI64_2 7665 1922 -74.92%
BenchmarkCompactDouble2 4250 1870 -56.00%
BenchmarkCompactString2 3416 1208 -64.64%
BenchmarkCompactBinary2 1397 756 -45.88%
benchmark old allocs new allocs delta
BenchmarkBinaryBool_0 6 0 -100.00%
BenchmarkBinaryByte_0 8 0 -100.00%
BenchmarkBinaryI16_0 1 0 -100.00%
BenchmarkBinaryI32_0 1 0 -100.00%
BenchmarkBinaryI64_0 1 0 -100.00%
BenchmarkBinaryDouble_0 1 0 -100.00%
BenchmarkBinaryString_0 13 4 -69.23%
BenchmarkBinaryBinary_0 1 1 0.00%
BenchmarkBinaryBool_1 6 0 -100.00%
BenchmarkBinaryByte_1 8 0 -100.00%
BenchmarkBinaryI16_1 1 0 -100.00%
BenchmarkBinaryI32_1 1 0 -100.00%
BenchmarkBinaryI64_1 1 0 -100.00%
BenchmarkBinaryDouble_1 1 0 -100.00%
BenchmarkBinaryString_1 13 4 -69.23%
BenchmarkBinaryBinary_1 1 1 0.00%
BenchmarkBinaryBool_2 10 0 -100.00%
BenchmarkBinaryByte_2 12 0 -100.00%
BenchmarkBinaryI16_2 5 0 -100.00%
BenchmarkBinaryI32_2 5 0 -100.00%
BenchmarkBinaryI64_2 5 0 -100.00%
BenchmarkBinaryDouble_2 5 0 -100.00%
BenchmarkBinaryString_2 17 4 -76.47%
BenchmarkBinaryBinary_2 5 1 -80.00%
BenchmarkCompactBool_0 12 0 -100.00%
BenchmarkCompactByte_0 16 0 -100.00%
BenchmarkCompactI16_0 25 0 -100.00%
BenchmarkCompactI32_0 33 0 -100.00%
BenchmarkCompactI64_0 70 0 -100.00%
BenchmarkCompactDouble0 30 0 -100.00%
BenchmarkCompactString0 24 4 -83.33%
BenchmarkCompactBinary0 4 1 -75.00%
BenchmarkCompactBool_1 12 0 -100.00%
BenchmarkCompactByte_1 16 0 -100.00%
BenchmarkCompactI16_1 25 0 -100.00%
BenchmarkCompactI32_1 33 0 -100.00%
BenchmarkCompactI64_1 70 0 -100.00%
BenchmarkCompactDouble1 30 0 -100.00%
BenchmarkCompactString1 24 4 -83.33%
BenchmarkCompactBinary1 4 1 -75.00%
BenchmarkCompactBool_2 16 0 -100.00%
BenchmarkCompactByte_2 20 0 -100.00%
BenchmarkCompactI16_2 29 0 -100.00%
BenchmarkCompactI32_2 37 0 -100.00%
BenchmarkCompactI64_2 74 0 -100.00%
BenchmarkCompactDouble2 34 0 -100.00%
BenchmarkCompactString2 28 4 -85.71%
BenchmarkCompactBinary2 8 1 -87.50%
benchmark old bytes new bytes delta
BenchmarkBinaryBool_0 48 0 -100.00%
BenchmarkBinaryByte_0 64 0 -100.00%
BenchmarkBinaryI16_0 8 0 -100.00%
BenchmarkBinaryI32_0 8 0 -100.00%
BenchmarkBinaryI64_0 8 0 -100.00%
BenchmarkBinaryDouble_0 8 0 -100.00%
BenchmarkBinaryString_0 344 112 -67.44%
BenchmarkBinaryBinary_0 160 160 0.00%
BenchmarkBinaryBool_1 48 0 -100.00%
BenchmarkBinaryByte_1 64 0 -100.00%
BenchmarkBinaryI16_1 8 0 -100.00%
BenchmarkBinaryI32_1 8 0 -100.00%
BenchmarkBinaryI64_1 8 0 -100.00%
BenchmarkBinaryDouble_1 8 0 -100.00%
BenchmarkBinaryString_1 344 112 -67.44%
BenchmarkBinaryBinary_1 160 160 0.00%
BenchmarkBinaryBool_2 192 0 -100.00%
BenchmarkBinaryByte_2 208 0 -100.00%
BenchmarkBinaryI16_2 168 0 -100.00%
BenchmarkBinaryI32_2 184 0 -100.00%
BenchmarkBinaryI64_2 248 0 -100.00%
BenchmarkBinaryDouble_2 264 0 -100.00%
BenchmarkBinaryString_2 584 112 -80.82%
BenchmarkBinaryBinary_2 448 160 -64.29%
BenchmarkCompactBool_0 96 0 -100.00%
BenchmarkCompactByte_0 128 0 -100.00%
BenchmarkCompactI16_0 200 0 -100.00%
BenchmarkCompactI32_0 264 0 -100.00%
BenchmarkCompactI64_0 664 0 -100.00%
BenchmarkCompactDouble0 240 0 -100.00%
BenchmarkCompactString0 432 112 -74.07%
BenchmarkCompactBinary0 184 160 -13.04%
BenchmarkCompactBool_1 96 0 -100.00%
BenchmarkCompactByte_1 128 0 -100.00%
BenchmarkCompactI16_1 200 0 -100.00%
BenchmarkCompactI32_1 264 0 -100.00%
BenchmarkCompactI64_1 664 0 -100.00%
BenchmarkCompactDouble1 240 0 -100.00%
BenchmarkCompactString1 432 112 -74.07%
BenchmarkCompactBinary1 184 160 -13.04%
BenchmarkCompactBool_2 232 0 -100.00%
BenchmarkCompactByte_2 264 0 -100.00%
BenchmarkCompactI16_2 344 0 -100.00%
BenchmarkCompactI32_2 424 0 -100.00%
BenchmarkCompactI64_2 856 0 -100.00%
BenchmarkCompactDouble2 496 0 -100.00%
BenchmarkCompactString2 656 112 -82.93%
BenchmarkCompactBinary2 472 160 -66.10%
{noformat}
> Optimize go implementations of binary and compact protocols for speed
> ---------------------------------------------------------------------
>
> Key: THRIFT-2502
> URL: https://issues.apache.org/jira/browse/THRIFT-2502
> Project: Thrift
> Issue Type: Improvement
> Components: Go - Library
> Reporter: Aleksey Pesternikov
> Priority: Minor
>
> Go implementation of binary and compact protocols are slow and creating unnecessary memory garbage
--
This message was sent by Atlassian JIRA
(v6.2#6252)