Joshua Haberman
d8b2154862
First version of an assembly language decoder.
...
It is slower than the C decoder for now because it
falls off the fast path too often. But it can
successfully decode varints, fixed32 and fixed64.
14 years ago
Joshua Haberman
f1e1cc4695
Split inttable into a hash part and an array part.
...
upb_inttable() now supports a "compact" operation that will
decide on an array size and put all entries with small enough
keys into the array part for faster lookup.
Also exposed the upb_itof_ent structure and put a few useful
values there, so they are one fewer pointer chase away.
14 years ago
Joshua Haberman
f9a6f67e27
Track buffer end instead of buffer length, for a small perf improvement.
14 years ago
Joshua Haberman
5edfe9a4c9
Remove upb_dstate and specialize upb_decode_fixed for perf improvement.
...
The compiler wasn't keeping upb_dstate in memory
anyway (which was the original goal). This
simplifies the decoder. upb_decode_fixed
was intended to minimize the number of branches,
but since it was calling out to memcpy as a
function, this turned out to be a pessimization.
Performance is encouraging:
plain32.parsestream_googlemessage1.upb_table: 254 -> 242 (-4.72)
plain32.parsestream_googlemessage2.upb_table: 357 -> 400 (12.04)
plain32.parsetostruct_googlemessage1.upb_table_byref: 143 -> 144 (0.70)
plain32.parsetostruct_googlemessage1.upb_table_byval: 122 -> 118 (-3.28)
plain32.parsetostruct_googlemessage2.upb_table_byref: 189 -> 200 (5.82)
plain32.parsetostruct_googlemessage2.upb_table_byval: 198 -> 200 (1.01)
omitfp32.parsestream_googlemessage1.upb_table: 267 -> 265 (-0.75)
omitfp32.parsestream_googlemessage2.upb_table: 377 -> 465 (23.34)
omitfp32.parsetostruct_googlemessage1.upb_table_byref: 140 -> 151 (7.86)
omitfp32.parsetostruct_googlemessage1.upb_table_byval: 131 -> 131 (0.00)
omitfp32.parsetostruct_googlemessage2.upb_table_byref: 204 -> 214 (4.90)
omitfp32.parsetostruct_googlemessage2.upb_table_byval: 200 -> 206 (3.00)
plain.parsestream_googlemessage1.upb_table: 313 -> 317 (1.28)
plain.parsestream_googlemessage2.upb_table: 476 -> 541 (13.66)
plain.parsetostruct_googlemessage1.upb_table_byref: 189 -> 189 (0.00)
plain.parsetostruct_googlemessage1.upb_table_byval: 165 -> 165 (0.00)
plain.parsetostruct_googlemessage2.upb_table_byref: 263 -> 270 (2.66)
plain.parsetostruct_googlemessage2.upb_table_byval: 248 -> 255 (2.82)
omitfp.parsestream_googlemessage1.upb_table: 306 -> 305 (-0.33)
omitfp.parsestream_googlemessage2.upb_table: 471 -> 531 (12.74)
omitfp.parsetostruct_googlemessage1.upb_table_byref: 189 -> 190 (0.53)
omitfp.parsetostruct_googlemessage1.upb_table_byval: 166 -> 172 (3.61)
omitfp.parsetostruct_googlemessage2.upb_table_byref: 258 -> 270 (4.65)
omitfp.parsetostruct_googlemessage2.upb_table_byval: 248 -> 265 (6.85)
14 years ago
Joshua Haberman
70cfa9ede9
Fix small problem in Makefile.
14 years ago
Joshua Haberman
27d61037f7
Whoops, fix small bug in Makefile.
14 years ago
Joshua Haberman
731282a8cc
Make -DUPB_THREAD_UNSAFE the default for now.
14 years ago
Joshua Haberman
ec454c1189
Support "make Q=" to view full commands.
14 years ago
Joshua Haberman
3cfe887c40
Fixes for building Lua extension.
14 years ago
Joshua Haberman
7af638ff2d
Revive Lua extension.
...
It builds and you can inspect a symtab.
Still need to expose streaming and message
based interfaces.
14 years ago
Joshua Haberman
bdb28b5a45
Make "byval" benchmarks actually byval.
14 years ago
Joshua Haberman
a80bcc5085
Recover bad performance of 0-keyed tables.
...
We do this by special-casing the (unusual) zero case
and only bother checking the is_empty bit in the
zero case.
14 years ago
Joshua Haberman
5137ac8d61
Update to latest descriptor.proto.
14 years ago
Joshua Haberman
4f9aeee6c7
More completely fixed the 0-key thing.
...
Unfortunately this degrades hash table lookup performance by
about 8%, which affects the streaming benchmark for googlemessage1
by about 5%. We could get this back at the cost of some memory,
but it would be nice to avoid that.
14 years ago
Joshua Haberman
6117730c85
Remove the restriction that 0 cannot be a table key.
...
This fixes issue:
http://code.google.com/p/upb/issues/detail?id=1
14 years ago
Joshua Haberman
b2d66287d9
Add warning about upcoming delegation changes.
14 years ago
Joshua Haberman
b40b40fb89
Cleaned up README.
14 years ago
Joshua Haberman
091d5f7924
Cleaned up README, removed TODO in favor of issues on Google Code.
14 years ago
Joshua Haberman
6881b2c5cb
Added proper error about broken 0-values for enums.
14 years ago
Joshua Haberman
b037b3e8f7
Moved upbc -> src/
14 years ago
Joshua Haberman
4dce5ab709
Fix upbc and descriptorgen, and update descriptor.
14 years ago
Joshua Haberman
ddb74551f4
Cleanup Makefile and mv descriptor/ -> src/
14 years ago
Joshua Haberman
6bdbb45e88
Merged core/ and stream/ -> src/. The split wasn't worth it.
14 years ago
Joshua Haberman
ee84a7da16
Add (but do not activate) an SSE varint decoder.
14 years ago
Joshua Haberman
bd1dfd397e
Cache temporary string in the decoder, for better benchmark numbers.
14 years ago
Joshua Haberman
c358fff57f
Cache decoding objects for better benchmark results. (~15%)
...
I would prefer to find an API that is both fast and doesn't
require this, but we'll do this for now.
14 years ago
Joshua Haberman
f858a8f287
Precompute bit offset and bitmask for a small perf improvement.
14 years ago
Joshua Haberman
6e308b7e80
Fix upb's parsetostruct benchmark.
14 years ago
Joshua Haberman
0313826cef
Benchmarks compile and run again!
14 years ago
Joshua Haberman
4667ed4be9
All tests pass again, valgrind-clean! Next up: benchmarks.
14 years ago
Joshua Haberman
806ba1c80d
Another round of fixes.
...
test_vs_proto2.googlemessage1 passes again,
with no memory leaks!
14 years ago
Joshua Haberman
3affb31926
Tons of work: we're close to passing test_vs_proto2 again.
14 years ago
Joshua Haberman
e170259e4a
Improved table benchmark accuracy and output formatting.
14 years ago
Joshua Haberman
f07cd8ff1d
Merge branch 'src-refactoring'
14 years ago
Joshua Haberman
8465e5e650
Gutted upb_msg a bit, re-adding only the essentials.
14 years ago
Joshua Haberman
9aa7e559d6
Fixes to decoder and textprinter: it works (for some input)!
...
A protobuf -> text stream for descriptor.proto
now outputs the same text as proto2.
14 years ago
Joshua Haberman
02a8cdfff2
Fixes to decoder, stdio, textprinter.
14 years ago
Joshua Haberman
93099cccd1
upb_strstream compiles again.
...
That covers all source files except upb_msg!
14 years ago
Joshua Haberman
8536bbc5f8
Some work on upb_msg, but it has a long way to go.
14 years ago
Joshua Haberman
d98db7cb56
Textprinter is compiling again.
14 years ago
Joshua Haberman
fbb9fd35e0
Improve comments in headers, to better explain core interfaces.
14 years ago
Joshua Haberman
5af1ade543
More work on textprinter.
14 years ago
Joshua Haberman
2c24cbb108
More work on decoder and stdio bytesrc/bytesink.
14 years ago
Joshua Haberman
93381f1411
Decoder compiles again! But probably doesn't work.
14 years ago
Joshua Haberman
fe659c8c93
Getting closer to a decoder that could actually compile and work.
14 years ago
Joshua Haberman
58a70b55c6
Decoder code structure is mostly in-place.
14 years ago
Joshua Haberman
5511aa16b0
Begin porting old decoder to new interfaces.
...
Doesn't build yet.
14 years ago
Joshua Haberman
2ea9737e5d
Added test_stream.c for testing upb_stream.h.
14 years ago
Joshua Haberman
c9df91b04a
upb bootstraps again! and with no memory leaks!
14 years ago
Joshua Haberman
a695b92cce
Debugging test_def, it's close to working again!
14 years ago