commit | d78b0857340d229ee122c56b89a630be2a7a5859 | [log] [tgz] |
---|---|---|
author | Todd Wang <toddw@google.com> | Tue May 17 12:56:06 2016 -0700 |
committer | Todd Wang <toddw@google.com> | Tue May 17 20:46:30 2016 +0000 |
tree | 2535f0e47c27533e82f103d76fb056869073b291 | |
parent | 8022fcf340d97e53da59c31c548f3dddc1bb7d84 [diff] |
Flip to new vdl/vom coder implementation. The purpose of this is two-fold: 1) Simplify the implementation of vdl/vom, so it's simpler to implement in different langauges, and also easier to ensure correctness. The new vdl.{En,De}coder interfaces are the basis of this, and replace the old vdl.Target interface. 2) Improve the performance of vom. By simplifying the implementation we've made it easier to speed things up. Note that the new implementation already exists in the codebase. This CL just makes a minimal change to flip everything over. Thus it's easy to revert if we have to. We will remove the old implementation after we're confident we don't need to revert. The new vom implementation only supports version 81. The old version 80 has been dropped. Note that the default has been vom version 81 since Feb 2016. My initial prototypes yielded even better results, but we had to sacrifice some of these gains in the short-term in order to get everything working (i.e. code-generation, reflection support, vom.RawBytes, vdl.Value, vdl.Convert, etc) while keeping the old vdl.Target based implementation working. We'll re-introduce those speedups after we've removed the old implementation. Here are some numbers. Everything gets faster, except: * Encoding vom.RawBytes gets much slower, because of an annoying subtlety regarding optional types. We will fix this later. * The rpc mux benchmarks get slightly slower. I don't know why. VOM micro-benchmarks old ns/op new ns/op delta VomEncodeRequest 2925 1866 -36.21% VomEncodeResponse 1820 833 -54.23% VomEncodeCustomer 40330 36031 -10.66% VomEncoder1Customer 40309 36014 -10.66% VomEncoder1000Customer 3142349 2046473 -34.87% VomEncoder1000RawBytes 294401 403669 +37.12% VomDecodeRequest 4552 2628 -42.27% VomDecodeResponse 2027 795 -60.78% VomDecodeCustomer 5805 5107 -12.02% VomDecoder1Customer 192649 172753 -10.33% VomDecoder1000Customer 4558302 2992711 -34.35% VomDecoder1000RawBytes 972727 517747 -46.77% RPC benchmarks old ns/op new ns/op delta ____1B 296491 284414 -4.07% ___1KB 325928 297664 -8.67% _100KB 1326710 1258173 -5.17% ____1B_ClientExpiryCav 317818 306347 -3.61% ___1KB_ClientExpiryCav 321261 302726 -5.77% _100KB_ClientExpiryCav 1256931 1201326 -4.42% ____1B_ServerExpiryCav 342073 307126 -10.22% ___1KB_ServerExpiryCav 365351 318310 -12.88% _100KB_ServerExpiryCav 1343229 1209946 -9.92% ____1_chunk_____1B 342637 321144 -6.27% ____1_chunk____1KB 349254 324237 -7.16% ____1_chunk__100KB 1224160 1163401 -4.96% ___10_chunk_____1B 729852 617652 -15.37% ___10_chunk____1KB 807691 696424 -13.78% ___10_chunk__100KB 5225549 4750544 -9.09% __100_chunk_____1B 4273110 3333279 -21.99% __100_chunk____1KB 4829135 4010860 -16.94% __100_chunk__100KB 43560028 40342297 -7.39% ___1K_chunk_____1B 39160789 29966919 -23.48% ___1K_chunk____1KB 44271650 37794217 -14.63% ___1K_chunk__100KB 431233078 394271852 -8.57% __per_chunk____1B 38471 29939 -22.18% __per_chunk___1KB 43828 36413 -16.92% __per_chunk_100KB 422104 374219 -11.34% ___10B_mux__100_chunks___1KB 452887 467271 +3.18% ___10B_mux__100_chunks__10KB 490306 493584 +0.67% ___10B_mux___1K_chunks___1KB 452046 476033 +5.31% ___10B_mux___1K_chunks__10KB 494417 507299 +2.61% ___1KB_mux__100_chunks___1KB 475109 493633 +3.90% ___1KB_mux__100_chunks__10KB 510881 506461 -0.87% ___1KB_mux___1K_chunks___1KB 499237 497410 -0.37% ___1KB_mux___1K_chunks__10KB 518693 519869 +0.23% ConnectionEstablishment 4999990 4514393 -9.71% ProxiedConnectionEstablishment 10075409 9126877 -9.41% PrivateConnectionEstablishment1 43243555 41965076 -2.96% PrivateConnectionEstablishment3 44434825 41787868 -5.96% Change-Id: I000867a3a0cfa81003c9af9ec5e54c1c07bd105d
This repository defines the Go APIs of Vanadium.