Commit Graph

888 Commits

Author SHA1 Message Date
Erick Tryzelaar
8d188747b8 Return an error type instead of unwrapping in the vec serializer 2014-08-04 16:39:21 -07:00
Erick Tryzelaar
6357c56674 implement Serializable/Deserializable for box types 2014-08-04 16:38:43 -07:00
Erick Tryzelaar
d689bc8b85 initial support for more full error messages 2014-08-03 12:35:15 -07:00
Erick Tryzelaar
499638eccd simplify deserializing a value from a primitive 2014-08-03 12:34:57 -07:00
Erick Tryzelaar
dbc1cbcbfb implement bench_log::bench_deserializer 2014-08-02 16:06:05 -07:00
Erick Tryzelaar
5298bf0301 remove dead code 2014-08-02 15:46:07 -07:00
Erick Tryzelaar
62eda3e19f use #[deriving_deserializable] everywhere 2014-08-02 15:42:49 -07:00
Erick Tryzelaar
9d43fe43a9 json should work with large integers 2014-08-02 15:40:08 -07:00
Erick Tryzelaar
d68710ea09 fix improper deserializing structs-as-maps 2014-08-02 15:39:16 -07:00
Erick Tryzelaar
4fc124de9b Update to rust HEAD 2014-08-02 09:25:44 -07:00
Erick Tryzelaar
5bfc73e36b Fix compiling bench_log 2014-07-31 07:18:26 -07:00
Erick Tryzelaar
0df01a1888 move json into a directory, add builder helper 2014-07-31 07:01:23 -07:00
Erick Tryzelaar
9278f26ac2 More simplifications 2014-07-27 21:13:27 -07:00
Erick Tryzelaar
7200be09e1 more simplification 2014-07-27 21:07:01 -07:00
Erick Tryzelaar
14d97f9c26 Cleaning up #[deriving_deserializable] 2014-07-27 20:16:18 -07:00
Erick Tryzelaar
04e2528a29 Initial support for #[deriving_deserializable] deserializing from maps 2014-07-27 18:33:16 -07:00
Erick Tryzelaar
4077d83cf2 Migrate over to cargo 2014-07-18 06:17:47 -07:00
Erick Tryzelaar
618e8d7b5a checkpoint 2014-07-17 21:28:31 -07:00
Erick Tryzelaar
97777d1144 more experimentation with MemWriter variations 2014-07-09 11:58:18 -07:00
Erick Tryzelaar
839da08e24 undo commenting out writing json control characters 2014-07-09 11:41:47 -07:00
Erick Tryzelaar
3a518887b5 update to rust HEAD 2014-07-09 11:33:15 -07:00
Erick Tryzelaar
aeffb413c4 experiment with alternative MemWriters
test bench_log::bench_copy                            ... bench:        87 ns/iter (+/- 30) = 7264 MB/s
test bench_log::bench_decoder                         ... bench:     26596 ns/iter (+/- 1725) = 23 MB/s
test bench_log::bench_direct_mem_writer               ... bench:      2210 ns/iter (+/- 94) = 209 MB/s
test bench_log::bench_direct_my_mem_writer            ... bench:      1939 ns/iter (+/- 120) = 239 MB/s
test bench_log::bench_encoder                         ... bench:      6988 ns/iter (+/- 488) = 90 MB/s
test bench_log::bench_manual_mem_writer_escape        ... bench:      2809 ns/iter (+/- 332) = 203 MB/s
test bench_log::bench_manual_mem_writer_no_escape     ... bench:      1817 ns/iter (+/- 113) = 315 MB/s
test bench_log::bench_manual_my_mem_writer2_escape    ... bench:      2250 ns/iter (+/- 117) = 254 MB/s
test bench_log::bench_manual_my_mem_writer2_no_escape ... bench:      1493 ns/iter (+/- 39) = 383 MB/s
test bench_log::bench_manual_my_mem_writer_escape     ... bench:      2196 ns/iter (+/- 47) = 260 MB/s
test bench_log::bench_manual_my_mem_writer_no_escape  ... bench:      1402 ns/iter (+/- 85) = 408 MB/s
test bench_log::bench_serializer                      ... bench:      2357 ns/iter (+/- 176) = 204 MB/s
test bench_log::bench_serializer2                     ... bench:      2070 ns/iter (+/- 38) = 233 MB/s
2014-07-05 23:44:43 -07:00
Erick Tryzelaar
076a35075a write spaces in batches 2014-07-04 16:53:23 -07:00
Erick Tryzelaar
c83d38ce79 rewrite escape_bytes to not write each byte individually 2014-07-04 16:30:09 -07:00
Erick Tryzelaar
8f5157407b simplify code, return null if floats are Nan or Inf 2014-07-04 14:39:09 -07:00
Erick Tryzelaar
fa9dbb5a3c bench_manual shouldn't be reallocating 2014-07-03 07:44:34 -07:00
Erick Tryzelaar
0436b74773 Add some manual tests 2014-07-03 07:07:30 -07:00
Erick Tryzelaar
a3f5f46754 Update to rust head 2014-07-02 21:06:28 -07:00
Erick Tryzelaar
48c471c769 json doesn't need an explicit PartialOrd impl 2014-06-30 07:18:08 -07:00
Erick Tryzelaar
89cddbbe1e simplify deserializing collections 2014-06-28 11:34:46 -07:00
Erick Tryzelaar
bf58947037 initial support for #[deriving_deserializable] 2014-06-28 08:39:02 -07:00
Erick Tryzelaar
eaa1fc26d1 add a #[deriving_serializable] macro 2014-06-27 21:43:23 -07:00
Erick Tryzelaar
91d68e256c Finish getting rid of all allocations when serializing. 2014-06-27 17:30:20 -07:00
Erick Tryzelaar
a62d516de9 Update to rust HEAD 2014-06-27 08:07:03 -07:00
Erick Tryzelaar
3f66b05798 simplify serializing tuples/structs/enums 2014-06-23 21:14:23 -04:00
Erick Tryzelaar
9058341234 simplify deserializing seqs and maps 2014-06-23 20:44:24 -04:00
Erick Tryzelaar
be34aefe78 Simpify bench_struct 2014-06-23 11:44:11 -04:00
Erick Tryzelaar
73b9a8cf74 Don't use trait objects in json 2014-06-23 08:29:50 -04:00
Erick Tryzelaar
7926ac2778 Minor cleanup 2014-06-22 21:55:07 -04:00
Erick Tryzelaar
23abb48e9b Simplify the Serializable typarams
This closes #14302
2014-06-22 21:54:58 -04:00
Erick Tryzelaar
22ff47f93b Simplify the Deserializable typarams 2014-06-22 16:51:50 -04:00
Erick Tryzelaar
ec8dd2f5a0 Optimize serialization
Serialization is now competitive with go's serialization, with
~60MB/s in the bench_logs test.
2014-06-22 10:33:45 -04:00
Erick Tryzelaar
ee162975f9 wip 2014-06-20 19:32:30 -04:00
Erick Tryzelaar
f46d5a9973 Add some serialization benchmarks
test bench_enum::bench_decoder_dog                 ... bench:       110 ns/iter (+/- 3)
test bench_enum::bench_decoder_frog                ... bench:       330 ns/iter (+/- 13)
test bench_enum::bench_deserializer_dog            ... bench:       116 ns/iter (+/- 1)
test bench_enum::bench_deserializer_frog           ... bench:       310 ns/iter (+/- 31)
test bench_map::bench_decoder_000                  ... bench:       528 ns/iter (+/- 43)
test bench_map::bench_decoder_003                  ... bench:      2330 ns/iter (+/- 168)
test bench_map::bench_decoder_100                  ... bench:     69124 ns/iter (+/- 6764)
test bench_map::bench_deserializer_000             ... bench:       790 ns/iter (+/- 73)
test bench_map::bench_deserializer_003             ... bench:      2552 ns/iter (+/- 443)
test bench_map::bench_deserializer_100             ... bench:     61059 ns/iter (+/- 3776)
test bench_struct::bench_decoder_0_0               ... bench:       608 ns/iter (+/- 54)
test bench_struct::bench_decoder_1_0               ... bench:      1584 ns/iter (+/- 84)
test bench_struct::bench_decoder_1_5               ... bench:      4294 ns/iter (+/- 799)
test bench_struct::bench_deserializer_0_0          ... bench:       670 ns/iter (+/- 61)
test bench_struct::bench_deserializer_1_0          ... bench:      2035 ns/iter (+/- 153)
test bench_struct::bench_deserializer_1_5          ... bench:      4825 ns/iter (+/- 699)
test bench_vec::bench_decoder_int_000              ... bench:        20 ns/iter (+/- 1)
test bench_vec::bench_decoder_int_003              ... bench:       149 ns/iter (+/- 8)
test bench_vec::bench_decoder_int_100              ... bench:       989 ns/iter (+/- 14)
test bench_vec::bench_decoder_u8_000               ... bench:        16 ns/iter (+/- 0)
test bench_vec::bench_decoder_u8_003               ... bench:       155 ns/iter (+/- 9)
test bench_vec::bench_decoder_u8_100               ... bench:      1424 ns/iter (+/- 13)
test bench_vec::bench_deserializer_int_000         ... bench:        16 ns/iter (+/- 0)
test bench_vec::bench_deserializer_int_003         ... bench:       152 ns/iter (+/- 11)
test bench_vec::bench_deserializer_int_100         ... bench:      1015 ns/iter (+/- 64)
test bench_vec::bench_deserializer_u8_000          ... bench:        16 ns/iter (+/- 1)
test bench_vec::bench_deserializer_u8_003          ... bench:       155 ns/iter (+/- 9)
test bench_vec::bench_deserializer_u8_100          ... bench:      1163 ns/iter (+/- 74)
test json::bench::bench_decoder_001                ... bench:      3951 ns/iter (+/- 523)
test json::bench::bench_decoder_001_streaming      ... bench:      2032 ns/iter (+/- 850)
test json::bench::bench_decoder_500                ... bench:   1936618 ns/iter (+/- 215448)
test json::bench::bench_decoder_500_streaming      ... bench:    831512 ns/iter (+/- 17862)
test json::bench::bench_deserializer_001           ... bench:      3767 ns/iter (+/- 127)
test json::bench::bench_deserializer_001_streaming ... bench:      2070 ns/iter (+/- 67)
test json::bench::bench_deserializer_500           ... bench:   1794293 ns/iter (+/- 63726)
test json::bench::bench_deserializer_500_streaming ... bench:    919105 ns/iter (+/- 56000)
test json::bench::bench_encoder_001                ... bench:      5137 ns/iter (+/- 146)
test json::bench::bench_encoder_001_pretty         ... bench:      7448 ns/iter (+/- 79)
test json::bench::bench_encoder_500                ... bench:   2310173 ns/iter (+/- 33944)
test json::bench::bench_encoder_500_pretty         ... bench:   3396347 ns/iter (+/- 163104)
test json::bench::bench_serializer_001             ... bench:      4009 ns/iter (+/- 412)
test json::bench::bench_serializer_001_pretty      ... bench:      6499 ns/iter (+/- 58)
test json::bench::bench_serializer_500             ... bench:   1721992 ns/iter (+/- 21521)
test json::bench::bench_serializer_500_pretty      ... bench:   2880591 ns/iter (+/- 146516)
2014-06-14 10:48:01 -07:00
Erick Tryzelaar
8e657078ef Update to rust HEAD 2014-06-14 09:15:37 -07:00
Erick Tryzelaar
7a536f22ef Initial version of json serialization working 2014-06-12 23:14:52 -07:00
Erick Tryzelaar
3cf15fb7f3 Update to rust HEAD 2014-06-12 06:31:47 -07:00
Erick Tryzelaar
32d90e4627 Fix ser tests 2014-06-09 21:52:10 -07:00
Erick Tryzelaar
d8fb2abd03 Change the json enum serialization to {"variant":["fields", ...]}
test bench_enum::bench_decoder_dog                   ... bench:       112 ns/iter (+/- 15)
test bench_enum::bench_decoder_frog                  ... bench:       336 ns/iter (+/- 6)
test bench_enum::bench_deserializer_dog              ... bench:       120 ns/iter (+/- 4)
test bench_enum::bench_deserializer_frog             ... bench:       317 ns/iter (+/- 15)
test bench_map::bench_decoder_000                    ... bench:       528 ns/iter (+/- 13)
test bench_map::bench_decoder_003                    ... bench:      2459 ns/iter (+/- 74)
test bench_map::bench_decoder_100                    ... bench:     70756 ns/iter (+/- 1979)
test bench_map::bench_deserializer_000               ... bench:       753 ns/iter (+/- 30)
test bench_map::bench_deserializer_003               ... bench:      2574 ns/iter (+/- 111)
test bench_map::bench_deserializer_100               ... bench:     62374 ns/iter (+/- 1714)
test bench_struct::bench_decoder_0_0                 ... bench:       609 ns/iter (+/- 14)
test bench_struct::bench_decoder_1_0                 ... bench:      1620 ns/iter (+/- 44)
test bench_struct::bench_decoder_1_5                 ... bench:      4393 ns/iter (+/- 88)
test bench_struct::bench_deserializer_0_0            ... bench:       699 ns/iter (+/- 10)
test bench_struct::bench_deserializer_1_0            ... bench:      2160 ns/iter (+/- 53)
test bench_struct::bench_deserializer_1_5            ... bench:      4987 ns/iter (+/- 87)
test bench_vec::bench_decoder_int_000                ... bench:        20 ns/iter (+/- 1)
test bench_vec::bench_decoder_int_003                ... bench:       148 ns/iter (+/- 3)
test bench_vec::bench_decoder_int_100                ... bench:      1009 ns/iter (+/- 44)
test bench_vec::bench_decoder_u8_000                 ... bench:        16 ns/iter (+/- 0)
test bench_vec::bench_decoder_u8_003                 ... bench:       152 ns/iter (+/- 12)
test bench_vec::bench_decoder_u8_100                 ... bench:      1457 ns/iter (+/- 95)
test bench_vec::bench_deserializer_int_000           ... bench:        16 ns/iter (+/- 0)
test bench_vec::bench_deserializer_int_003           ... bench:       153 ns/iter (+/- 9)
test bench_vec::bench_deserializer_int_100           ... bench:      1015 ns/iter (+/- 38)
test bench_vec::bench_deserializer_u8_000            ... bench:        16 ns/iter (+/- 1)
test bench_vec::bench_deserializer_u8_003            ... bench:       160 ns/iter (+/- 130)
test bench_vec::bench_deserializer_u8_100            ... bench:      1225 ns/iter (+/- 112)
test json::tests::bench_decoder_large                ... bench:   1979093 ns/iter (+/- 67769)
test json::tests::bench_decoder_small                ... bench:      4644 ns/iter (+/- 208)
test json::tests::bench_decoder_streaming_large      ... bench:    848383 ns/iter (+/- 96301)
test json::tests::bench_decoder_streaming_small      ... bench:      1834 ns/iter (+/- 120)
test json::tests::bench_deserializer_large           ... bench:   1882598 ns/iter (+/- 137262)
test json::tests::bench_deserializer_small           ... bench:      3945 ns/iter (+/- 161)
test json::tests::bench_deserializer_streaming_large ... bench:    990086 ns/iter (+/- 157794)
test json::tests::bench_deserializer_streaming_small ... bench:      2135 ns/iter (+/- 211)
2014-06-09 07:51:53 -07:00
Erick Tryzelaar
ee3dee8893 Initial version of serialization. 2014-06-08 15:17:18 -07:00