Joshua Haberman
|
d5f5db2729
|
Put string-copying field parser into a separate function.
This helps to regain a bit of lost perf. Now at 2.3GB/s.
|
4 years ago |
Joshua Haberman
|
883f20d4dc
|
Merge branch 'master' into fastest-table
Unfortunately this regresses the benchmark to ~2.25GB/s.
Optimizations forthcoming.
|
4 years ago |
Joshua Haberman
|
1bd62e8218
|
Merge pull request #324 from haberman/simplemomi
Eliminated bounds checks inside parsing a field.
|
4 years ago |
Joshua Haberman
|
f4adbe0698
|
Optimized varint decoding from Gerben.
This speeds things up but costs some code size.
name old time/op new time/op delta
ArenaOneAlloc 21.1ns ± 0% 21.3ns ± 0% +1.33% (p=0.000 n=12+12)
ArenaInitialBlockOneAlloc 6.02ns ± 0% 6.02ns ± 0% ~ (p=0.579 n=10+10)
LoadDescriptor_Upb 111µs ± 1% 110µs ± 1% -0.91% (p=0.003 n=11+12)
LoadDescriptor_Proto2 258µs ± 1% 258µs ± 1% ~ (p=0.674 n=10+12)
Parse_Upb_FileDesc_WithArena 11.2µs ± 0% 10.4µs ± 0% -6.67% (p=0.000 n=12+12)
Parse_Upb_FileDesc_WithInitialBlock 10.6µs ± 0% 10.1µs ± 0% -4.48% (p=0.000 n=12+11)
SerializeDescriptor_Proto2 5.36µs ± 5% 5.36µs ± 3% ~ (p=0.880 n=12+11)
SerializeDescriptor_Upb 11.9µs ± 0% 12.0µs ± 0% +0.81% (p=0.000 n=12+12)
FILE SIZE VM SIZE
-------------- --------------
+23% +1.11Ki +24% +1.06Ki upb/decode.c
+15% +560 +15% +560 decode_msg
+140% +240 +188% +240 decode_longvarint64
[NEW] +174 [NEW] +128 decode_isdonefallback
+56% +160 +65% +160 upb_decode
-49.7% -1.06Ki [ = ] 0 [Unmapped]
+0.0% +48 +0.9% +1.06Ki TOTAL
|
4 years ago |
Joshua Haberman
|
48689df72e
|
Eliminated bounds checks inside parsing a field.
Each field parser gets 16 bytes of slop. This requires using a patch
buffer at end-of-buffer.
This addes 80% of what is needed to support a pull parser with a data
callback, since the main parser is now tolerant to buffer flips.
There is a ~4% performance regression and 12% code size regression in
upb/decode.c:
name old time/op new time/op delta
ArenaOneAlloc 21.0ns ± 0% 21.6ns ± 0% +2.87% (p=0.000 n=12+12)
ArenaInitialBlockOneAlloc 6.02ns ± 0% 6.02ns ± 0% +0.09% (p=0.001 n=11+12)
LoadDescriptor_Upb 114µs ± 1% 115µs ± 1% +0.96% (p=0.000 n=11+12)
LoadDescriptor_Proto2 260µs ± 1% 261µs ± 1% +0.55% (p=0.033 n=12+12)
Parse_Upb_FileDesc_WithArena 10.8µs ± 0% 11.2µs ± 0% +3.43% (p=0.000 n=11+11)
Parse_Upb_FileDesc_WithInitialBlock 10.5µs ± 0% 10.9µs ± 0% +3.68% (p=0.000 n=12+12)
SerializeDescriptor_Proto2 5.25µs ± 3% 5.42µs ± 5% +3.39% (p=0.007 n=12+12)
SerializeDescriptor_Upb 12.0µs ± 0% 12.5µs ± 0% +4.14% (p=0.000 n=12+11)
FILE SIZE VM SIZE
-------------- --------------
+12% +606 +12% +560 upb/decode.c
+7.9% +288 +7.9% +288 decode_msg
[NEW] +174 [NEW] +128 decode_isdonefallback
+56% +160 +65% +160 upb_decode
-9.3% -16 -12.5% -16 decode_longvarint64
-25.5% -558 [ = ] 0 [Unmapped]
+0.0% +48 +0.4% +560 TOTAL
|
4 years ago |
Joshua Haberman
|
7d17a0e8c5
|
Merge branch 'master' into fastest-table
|
5 years ago |
Joshua Haberman
|
a7e2e8338d
|
Fixed benchmark script.
|
5 years ago |
Joshua Haberman
|
cb234e652c
|
Merge branch 'master' into fastest-table
|
5 years ago |
Joshua Haberman
|
b86cf2d789
|
Merge pull request #323 from haberman/build-files
Split monolithic BUILD file into many build files.
|
5 years ago |
Joshua Haberman
|
4ea81ab107
|
Fixed pedantic warning.
|
5 years ago |
Joshua Haberman
|
6399b31f4b
|
Removed ULL constants in json_decode.c.
|
5 years ago |
Joshua Haberman
|
c8ae197e64
|
Removed "U" suffixes, they are not necessary.
|
5 years ago |
Joshua Haberman
|
bc1e0b314f
|
Fixed some strict C89 errors.
|
5 years ago |
Joshua Haberman
|
2c1664906a
|
Removed license comments and upb_amalgamation for google3.
|
5 years ago |
Joshua Haberman
|
b7dc77415a
|
Added licenses() to all BUILD files.
|
5 years ago |
Joshua Haberman
|
de22764b33
|
Updated Kokoro to test ... instead of :all.
|
5 years ago |
Joshua Haberman
|
e3f41de6c7
|
Split monolithic BUILD file into many build files.
|
5 years ago |
Joshua Haberman
|
d0e4b688c6
|
Shorten name of kAliasString, so benchmark results don't wrap.
|
5 years ago |
Joshua Haberman
|
eb8e6de8b7
|
Regenerated source files.
|
5 years ago |
Joshua Haberman
|
bf8e08074c
|
Added a few more comments.
|
5 years ago |
Joshua Haberman
|
3238821315
|
Gave fast table entry a nicer name.
|
5 years ago |
Joshua Haberman
|
2a574d3d01
|
Added a bunch of comments for readability.
|
5 years ago |
Joshua Haberman
|
bfadc99709
|
Merge branch 'master' into fastest-table
|
5 years ago |
Joshua Haberman
|
84e0f6127d
|
Merge branch 'master' into fastest-table
|
5 years ago |
Joshua Haberman
|
4f066765a9
|
Merge pull request #320 from haberman/string-view-benchmark
Added a benchmark for ctype=STRING_PIECE
|
5 years ago |
Joshua Haberman
|
bf393bf086
|
Cleaned up benchmark names.
|
5 years ago |
Joshua Haberman
|
9eb8414b31
|
Added descriptor_sv.proto.
|
5 years ago |
Joshua Haberman
|
ee7da95367
|
Bzl formatting fix per buildifier.
|
5 years ago |
Joshua Haberman
|
de1b6b0718
|
Refactored proto2 benchmarks and added StringView benchmark.
|
5 years ago |
Joshua Haberman
|
c2901eeee1
|
Added missing #includes (caught by Blaze).
|
5 years ago |
Joshua Haberman
|
52721eadc7
|
Order LargeInitialBlock after non-initial-block test.
|
5 years ago |
Joshua Haberman
|
44a7130845
|
Used the correct copy of the protos in the benchmark.
|
5 years ago |
Joshua Haberman
|
d01b712dbb
|
Merge branch 'master' into fastest-table
|
5 years ago |
Joshua Haberman
|
d225dfc2ed
|
Buildifier formatting fixes.
|
5 years ago |
Joshua Haberman
|
b0994a6501
|
Added missing dep from benchmark.
|
5 years ago |
Joshua Haberman
|
de80054018
|
Make required fields optional for benchmarking.
|
5 years ago |
Joshua Haberman
|
745661bf1f
|
Merge branch 'master' into fastest-table
|
5 years ago |
Joshua Haberman
|
11585095b7
|
Merge pull request #319 from haberman/copy-descriptor
Snapshot descriptor.proto into our own copy for benchmarking purposes.
|
5 years ago |
Joshua Haberman
|
fd5a35d49d
|
Minor comment changes.
|
5 years ago |
Joshua Haberman
|
bdd1a516e8
|
Fixed other tests.
|
5 years ago |
Joshua Haberman
|
27262adf93
|
Snapshot descriptor.proto into our own copy for benchmarking purposes.
This will ensure that the schema and payload are constant across
time and space.
|
5 years ago |
Joshua Haberman
|
d6b40fd5e2
|
Added missing dependency on reflection.
|
5 years ago |
Joshua Haberman
|
b9f1b67d07
|
Use quoted include.
|
5 years ago |
Joshua Haberman
|
d5c64476fd
|
Merge pull request #318 from haberman/descriptor-load-benchmark
Benchmarks for descriptor loading time.
|
5 years ago |
Joshua Haberman
|
42d2f6cef9
|
Add MB/s measures in the benchmarks.
Current output on my machine is:
-----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------------
BM_ArenaOneAlloc 21 ns 21 ns 33344552
BM_ArenaInitialBlockOneAlloc 6 ns 6 ns 115948084
BM_LoadDescriptor_Upb 107286 ns 107275 ns 6512 67.5731MB/s
BM_LoadDescriptor_Proto2 240539 ns 240537 ns 2909 30.1362MB/s
BM_ParseDescriptor_Upb_LargeInitialBlock 11500 ns 11499 ns 60864 630.377MB/s
BM_ParseDescriptor_Upb 11920 ns 11920 ns 58676 608.123MB/s
BM_ParseDescriptor_Proto2_NoArena 31338 ns 31336 ns 22389 231.325MB/s
BM_ParseDescriptor_Proto2_Arena 21622 ns 21622 ns 32472 335.26MB/s
BM_ParseDescriptor_Proto2_Arena_LargeInitialBlock 17799 ns 17798 ns 39266 407.288MB/s
BM_SerializeDescriptor_Proto2 4943 ns 4942 ns 141050 1.43252GB/s
BM_SerializeDescriptor_Upb 12262 ns 12261 ns 57131 591.195MB/s
|
5 years ago |
Joshua Haberman
|
1ce98b86ec
|
Added LoadDescriptor benchmark for proto2.
|
5 years ago |
Joshua Haberman
|
4890735ce2
|
Added benchmark for descriptor loading.
|
5 years ago |
Joshua Haberman
|
6874d61704
|
Merge pull request #317 from haberman/gencode-compat
Compatibility with old generated code
|
5 years ago |
Joshua Haberman
|
c81113e60f
|
Added fallback code for when no enum matches.
|
5 years ago |
Joshua Haberman
|
c10b24ffb2
|
Simplified switch().
|
5 years ago |