Joshua Haberman
6942911f03
Fix bug in perf-tests.sh (some shells didn't care?)
14 years ago
Joshua Haberman
26264c25a5
Don't require NASM to build unless using the x64 decoder.
14 years ago
Joshua Haberman
6f6a2937bf
Make proto2 benchmarks use ParsePartial, to make results vs upb more comparable.
...
ParsePartial does not check that required fields are set, which upb
also currently does not do.
This sped up proto2 reflection by 40%, but upb is still 7x faster in
a comparable test (instead of 11x, like before).
14 years ago
Joshua Haberman
65b57a2813
Added escaping for text output.
14 years ago
Joshua Haberman
a75a305c77
Implemented upb_stringsink, upb_msgtotext, and exposed the latter to Lua.
14 years ago
Joshua Haberman
abfc897b50
Pass the upb_fielddef* to the endmsg callback.
14 years ago
Joshua Haberman
4d65852909
Rearrange structs to put arrays at the end, for smaller offsets.
14 years ago
Joshua Haberman
3a758132b4
Added proper support for enum default values.
14 years ago
Joshua Haberman
6b574175dd
Prevent the default message from getting mutated.
...
If a Lua program references the default message, it will
be copied into a mutable object.
14 years ago
Joshua Haberman
fd184f0df2
Major work on Lua extension and default values.
...
Default values are now supported, and the Lua extension
can now create and modify individual protobuf objects.
14 years ago
Joshua Haberman
0c6786c6fa
Split varint decoders into separate .h file.
...
This makes it easier to benchmark and test the
multiple possible implementations of varint decoding.
14 years ago
Joshua Haberman
da95bf34ae
Fix building of Lua extension on OS X.
14 years ago
Joshua Haberman
1e972d40f1
Bring lua extension up to date with new symtab APIs.
14 years ago
Joshua Haberman
61e5d367ff
Change the API for getting the bootstrapped defs.
...
The symtab that contains them is now hidden, and
you can look them up by name but there is no access
to the symtab itself, so there is no risk of
mutating it (by extending it, adding other defs
to it, etc).
14 years ago
Joshua Haberman
ff23340fe2
Fix efficiency bug for major (50% performance improvement!
...
There was a bug with string referencing that prevented
strings from being recycled as often as they ought to be.
14 years ago
Joshua Haberman
e75cff570c
Return updated buf as second return value, to free up a reg.
14 years ago
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