Skip to content
Dawid Ciężarkiewicz edited this page Apr 8, 2017 · 19 revisions

Benchmark dump archive. Starting from most recent ones.

slog-2.0.0-3.1

test log_async_json_blackbox_00br_00_ow     ... bench:         136 ns/iter (+/- 1)
test log_async_json_blackbox_00br_10_ow     ... bench:         136 ns/iter (+/- 1)
test log_async_json_blackbox_10br_00ow      ... bench:         405 ns/iter (+/- 9)
test log_async_json_blackbox_10br_10ow      ... bench:         410 ns/iter (+/- 7)
test log_empty_json_blackbox_00br_10ow      ... bench:         105 ns/iter (+/- 0)
test log_empty_json_blackbox_10br_10ow      ... bench:         189 ns/iter (+/- 17)
test log_empty_json_blackbox_i32closure     ... bench:          36 ns/iter (+/- 13)
test log_empty_json_blackbox_i32pushclosure ... bench:          34 ns/iter (+/- 1)
test log_empty_json_blackbox_i32val         ... bench:          32 ns/iter (+/- 0)
test log_empty_json_blackbox_strclosure     ... bench:          68 ns/iter (+/- 1)
test log_empty_json_blackbox_strpushclosure ... bench:          59 ns/iter (+/- 1)
test log_json_blackbox_10br_00ow            ... bench:         883 ns/iter (+/- 25)
test log_json_blackbox_10br_10ow            ... bench:         958 ns/iter (+/- 16)
test log_json_blackbox_i32closure           ... bench:         786 ns/iter (+/- 13)
test log_json_blackbox_i32pushclosure       ... bench:         788 ns/iter (+/- 18)
test log_json_blackbox_i32val               ... bench:         799 ns/iter (+/- 29)
test log_json_blackbox_strclosure           ... bench:         834 ns/iter (+/- 17)
test log_json_blackbox_strpushclosure       ... bench:         825 ns/iter (+/- 14)
test logger_child_00prev_00new              ... bench:          47 ns/iter (+/- 0)
test logger_child_00prev_10new              ... bench:          58 ns/iter (+/- 0)
test logger_child_10prev_00new              ... bench:          44 ns/iter (+/- 0)
test logger_child_10prev_10new              ... bench:          55 ns/iter (+/- 3)
test logger_clone                           ... bench:          21 ns/iter (+/- 1)
test logger_clone_10prev                    ... bench:          20 ns/iter (+/- 0)
test tmp_file_write_1b                      ... bench:         368 ns/iter (+/- 19)
test tmp_file_write_1kib                    ... bench:         522 ns/iter (+/- 15)
test x100_arc::log_discard_00br_00ow        ... bench:         292 ns/iter (+/- 5)
test x100_arc::log_discard_00br_10ow        ... bench:         295 ns/iter (+/- 15)
test x100_arc::log_discard_10br_00ow        ... bench:       1,006 ns/iter (+/- 50)
test x100_arc::log_discard_u32closure       ... bench:         364 ns/iter (+/- 18)
test x100_arc::log_discard_u32val           ... bench:         361 ns/iter (+/- 18)
test x100_arc::log_filter_out_empty         ... bench:         262 ns/iter (+/- 5)
test x100_typ::log_discard_00br_00ow        ... bench:         240 ns/iter (+/- 12)
test x100_typ::log_discard_00br_10ow        ... bench:         240 ns/iter (+/- 12)
test x100_typ::log_discard_10br_00ow        ... bench:         960 ns/iter (+/- 47)
test x100_typ::log_discard_u32closure       ... bench:         312 ns/iter (+/- 15)
test x100_typ::log_discard_u32val           ... bench:         311 ns/iter (+/- 6)
test x100_typ::log_filter_out_empty         ... bench:         192 ns/iter (+/- 5)
test x1_arc::log_discard_00br_00ow          ... bench:           2 ns/iter (+/- 0)
test x1_arc::log_discard_00br_10ow          ... bench:           3 ns/iter (+/- 0)
test x1_arc::log_discard_10br_00ow          ... bench:           3 ns/iter (+/- 0)
test x1_arc::log_discard_u32closure         ... bench:           2 ns/iter (+/- 0)
test x1_arc::log_discard_u32val             ... bench:           3 ns/iter (+/- 0)
test x1_arc::log_filter_out_empty           ... bench:           2 ns/iter (+/- 0)
test x1_typ::log_discard_00br_00ow          ... bench:           2 ns/iter (+/- 0)
test x1_typ::log_discard_00br_10ow          ... bench:           2 ns/iter (+/- 0)
test x1_typ::log_discard_10br_00ow          ... bench:           2 ns/iter (+/- 0)
test x1_typ::log_discard_u32closure         ... bench:           2 ns/iter (+/- 0)
test x1_typ::log_discard_u32val             ... bench:           2 ns/iter (+/- 0)
test x1_typ::log_filter_out_empty           ... bench:           2 ns/iter (+/- 0)

slog-2.0.0-alpha

test log_async_json_blackbox_00br_00_ow     ... bench:         145 ns/iter (+/- 2)
test log_async_json_blackbox_00br_10_ow     ... bench:         136 ns/iter (+/- 1)
test log_async_json_blackbox_10br_00ow      ... bench:         394 ns/iter (+/- 3)
test log_async_json_blackbox_10br_10ow      ... bench:         392 ns/iter (+/- 3)
test log_empty_json_blackbox_00br_10ow      ... bench:         100 ns/iter (+/- 5)
test log_empty_json_blackbox_10br_10ow      ... bench:         178 ns/iter (+/- 17)
test log_empty_json_blackbox_i32closure     ... bench:          31 ns/iter (+/- 2)
test log_empty_json_blackbox_i32pushclosure ... bench:          30 ns/iter (+/- 1)
test log_empty_json_blackbox_i32val         ... bench:          31 ns/iter (+/- 1)
test log_empty_json_blackbox_strclosure     ... bench:          66 ns/iter (+/- 2)
test log_empty_json_blackbox_strpushclosure ... bench:          54 ns/iter (+/- 2)
test log_json_blackbox_10br_00ow            ... bench:         849 ns/iter (+/- 40)
test log_json_blackbox_10br_10ow            ... bench:         963 ns/iter (+/- 63)
test log_json_blackbox_i32closure           ... bench:         758 ns/iter (+/- 63)
test log_json_blackbox_i32pushclosure       ... bench:         757 ns/iter (+/- 30)
test log_json_blackbox_i32val               ... bench:         763 ns/iter (+/- 33)
test log_json_blackbox_strclosure           ... bench:         794 ns/iter (+/- 70)
test log_json_blackbox_strpushclosure       ... bench:         776 ns/iter (+/- 55)
test logger_child_00prev_00new              ... bench:          46 ns/iter (+/- 4)
test logger_child_00prev_10new              ... bench:          56 ns/iter (+/- 3)
test logger_child_10prev_00new              ... bench:          41 ns/iter (+/- 1)
test logger_child_10prev_10new              ... bench:          55 ns/iter (+/- 15)
test logger_clone                           ... bench:          19 ns/iter (+/- 0)
test logger_clone_10prev                    ... bench:          19 ns/iter (+/- 1)
test tmp_file_write_1b                      ... bench:         367 ns/iter (+/- 7)
test tmp_file_write_1kib                    ... bench:         509 ns/iter (+/- 29)
test x100::log_discard_00br_00ow_x100       ... bench:         343 ns/iter (+/- 34)
test x100::log_discard_00br_10ow_x100       ... bench:         343 ns/iter (+/- 15)
test x100::log_discard_10br_00ow_x100       ... bench:       1,049 ns/iter (+/- 74)
test x100::log_discard_u32closure_x100      ... bench:         410 ns/iter (+/- 30)
test x100::log_discard_u32val_x100          ... bench:         411 ns/iter (+/- 24)
test x100::log_filter_out_empty_x100        ... bench:         268 ns/iter (+/- 18)
test x1::log_discard_00br_00ow_x1           ... bench:           3 ns/iter (+/- 0)
test x1::log_discard_00br_10ow_x1           ... bench:           3 ns/iter (+/- 0)
test x1::log_discard_10br_00ow_x1           ... bench:           3 ns/iter (+/- 0)
test x1::log_discard_u32closure_x1          ... bench:           3 ns/iter (+/- 0)
test x1::log_discard_u32val_x1              ... bench:           3 ns/iter (+/- 0)
test x1::log_filter_out_empty_x1            ... bench:           2 ns/iter (+/- 0)

slog 1.4.1 - Probably just affected by compiler optimization improvements

test log_discard_empty                             ... bench:           2 ns/iter (+/- 0)
test log_discard_i32closure                        ... bench:           2 ns/iter (+/- 0)
test log_discard_i32val                            ... bench:           2 ns/iter (+/- 0)
test log_discard_nonempty                          ... bench:           2 ns/iter (+/- 0)
test log_discard_nonempty_10                       ... bench:           2 ns/iter (+/- 0)
test log_filter_out_empty                          ... bench:           2 ns/iter (+/- 0)
test log_stream_async_empty_json_blackbox_10       ... bench:         468 ns/iter (+/- 5)
test log_stream_async_empty_json_blackbox_i32val   ... bench:         197 ns/iter (+/- 1)
test log_stream_async_empty_json_blackbox_log_10   ... bench:         147 ns/iter (+/- 0)
test log_stream_async_json_blackbox_10             ... bench:         494 ns/iter (+/- 4)
test log_stream_async_json_blackbox_i32val         ... bench:         305 ns/iter (+/- 107)
test log_stream_async_json_blackbox_log_10         ... bench:         220 ns/iter (+/- 9)
test log_stream_empty_json_blackbox_10             ... bench:         448 ns/iter (+/- 23)
test log_stream_empty_json_blackbox_i32closure     ... bench:          61 ns/iter (+/- 4)
test log_stream_empty_json_blackbox_i32pushclosure ... bench:          61 ns/iter (+/- 1)
test log_stream_empty_json_blackbox_i32val         ... bench:          61 ns/iter (+/- 1)
test log_stream_empty_json_blackbox_log_10         ... bench:         481 ns/iter (+/- 47)
test log_stream_empty_json_blackbox_strclosure     ... bench:         112 ns/iter (+/- 15)
test log_stream_empty_json_blackbox_strpushclosure ... bench:          97 ns/iter (+/- 2)
test log_stream_json_blackbox_10                   ... bench:       1,402 ns/iter (+/- 191)
test log_stream_json_blackbox_i32closure           ... bench:         956 ns/iter (+/- 129)
test log_stream_json_blackbox_i32pushclosure       ... bench:         938 ns/iter (+/- 21)
test log_stream_json_blackbox_i32val               ... bench:         938 ns/iter (+/- 119)
test log_stream_json_blackbox_log_10               ... bench:       1,507 ns/iter (+/- 203)
test log_stream_json_blackbox_strclosure           ... bench:       1,017 ns/iter (+/- 96)
test log_stream_json_blackbox_strpushclosure       ... bench:       1,024 ns/iter (+/- 125)
test logger_clone_empty                            ... bench:          19 ns/iter (+/- 0)
test logger_clone_nonempty                         ... bench:          21 ns/iter (+/- 1)
test logger_new_empty                              ... bench:          21 ns/iter (+/- 2)
test logger_new_nonempty                           ... bench:          54 ns/iter (+/- 7)
test logger_new_nonempty_10                        ... bench:          58 ns/iter (+/- 5)
test tmp_file_write_1b                             ... bench:         378 ns/iter (+/- 13)
test tmp_file_write_1kib                           ... bench:         539 ns/iter (+/- 27)

7347a13 - Switch AsyncStramer to use slog_extra::Async

test log_discard_empty                             ... bench:           2 ns/iter (+/- 1)
test log_discard_i32closure                        ... bench:           3 ns/iter (+/- 1)
test log_discard_i32val                            ... bench:           3 ns/iter (+/- 1)
test log_discard_nonempty                          ... bench:           3 ns/iter (+/- 0)
test log_discard_nonempty_10                       ... bench:          12 ns/iter (+/- 1)
test log_filter_out_empty                          ... bench:           2 ns/iter (+/- 0)
test log_stream_async_empty_json_blackbox_10       ... bench:         468 ns/iter (+/- 10)
test log_stream_async_empty_json_blackbox_i32val   ... bench:         195 ns/iter (+/- 6)
test log_stream_async_empty_json_blackbox_log_10   ... bench:         140 ns/iter (+/- 8)
test log_stream_async_json_blackbox_10             ... bench:         481 ns/iter (+/- 24)
test log_stream_async_json_blackbox_i32val         ... bench:         182 ns/iter (+/- 28)
test log_stream_async_json_blackbox_log_10         ... bench:         134 ns/iter (+/- 8)
test log_stream_empty_json_blackbox_10             ... bench:         407 ns/iter (+/- 14)
test log_stream_empty_json_blackbox_i32closure     ... bench:          62 ns/iter (+/- 3)
test log_stream_empty_json_blackbox_i32pushclosure ... bench:          62 ns/iter (+/- 2)
test log_stream_empty_json_blackbox_i32val         ... bench:          63 ns/iter (+/- 4)
test log_stream_empty_json_blackbox_log_10         ... bench:         440 ns/iter (+/- 22)
test log_stream_empty_json_blackbox_strclosure     ... bench:         112 ns/iter (+/- 5)
test log_stream_empty_json_blackbox_strpushclosure ... bench:          97 ns/iter (+/- 7)
test log_stream_json_blackbox_10                   ... bench:       1,332 ns/iter (+/- 71)
test log_stream_json_blackbox_i32closure           ... bench:         939 ns/iter (+/- 29)
test log_stream_json_blackbox_i32pushclosure       ... bench:         949 ns/iter (+/- 57)
test log_stream_json_blackbox_i32val               ... bench:         949 ns/iter (+/- 51)
test log_stream_json_blackbox_log_10               ... bench:       1,362 ns/iter (+/- 76)
test log_stream_json_blackbox_strclosure           ... bench:       1,001 ns/iter (+/- 57)
test log_stream_json_blackbox_strpushclosure       ... bench:         977 ns/iter (+/- 48)
test logger_clone_empty                            ... bench:          20 ns/iter (+/- 1)
test logger_clone_nonempty                         ... bench:          20 ns/iter (+/- 1)
test logger_new_empty                              ... bench:          21 ns/iter (+/- 1)
test logger_new_nonempty                           ... bench:          54 ns/iter (+/- 2)
test logger_new_nonempty_10                        ... bench:          63 ns/iter (+/- 3)
test tmp_file_write_1b                             ... bench:         472 ns/iter (+/- 25)
test tmp_file_write_1kib                           ... bench:         581 ns/iter (+/- 28)

732047 BREAKING: Rewrite handling of owned values.

test log_discard_empty                             ... bench:           2 ns/iter (+/[1/358]
test log_discard_i32closure                        ... bench:           3 ns/iter (+/- 1)
test log_discard_i32val                            ... bench:           4 ns/iter (+/- 0)
test log_discard_nonempty                          ... bench:           4 ns/iter (+/- 1)
test log_discard_nonempty_10                       ... bench:          13 ns/iter (+/- 0)
test log_filter_out_empty                          ... bench:           2 ns/iter (+/- 0)
test log_stream_empty_json_blackbox_10             ... bench:         439 ns/iter (+/- 2)
test log_stream_empty_json_blackbox_i32closure     ... bench:          62 ns/iter (+/- 4)
test log_stream_empty_json_blackbox_i32pushclosure ... bench:          62 ns/iter (+/- 5)
test log_stream_empty_json_blackbox_i32val         ... bench:          63 ns/iter (+/- 4)
test log_stream_empty_json_blackbox_strclosure     ... bench:         112 ns/iter (+/- 3)
test log_stream_empty_json_blackbox_strpushclosure ... bench:          97 ns/iter (+/- 5)
test log_stream_json_blackbox_10                   ... bench:       1,487 ns/iter (+/- 67)
test log_stream_json_blackbox_i32closure           ... bench:         993 ns/iter (+/- 5)
test log_stream_json_blackbox_i32pushclosure       ... bench:       1,000 ns/iter (+/- 38)
test log_stream_json_blackbox_i32val               ... bench:         995 ns/iter (+/- 41)
test log_stream_json_blackbox_strclosure           ... bench:       1,038 ns/iter (+/- 64)
test log_stream_json_blackbox_strpushclosure       ... bench:       1,020 ns/iter (+/- 61)
test logger_clone_empty                            ... bench:          21 ns/iter (+/- 0)
test logger_clone_nonempty                         ... bench:          20 ns/iter (+/- 1)
test logger_new_empty                              ... bench:          22 ns/iter (+/- 0)
test logger_new_nonempty                           ... bench:          54 ns/iter (+/- 0)
test logger_new_nonempty_10                        ... bench:          64 ns/iter (+/- 2)
test tmp_file_write_1b                             ... bench:         449 ns/iter (+/- 11)
test tmp_file_write_1kib                           ... bench:         583 ns/iter (+/- 32)

6cfc54c

test log_discard_empty                             ... bench:           2 ns/iter (+/- 0)
test log_discard_i32closure                        ... bench:           3 ns/iter (+/- 1)
test log_discard_i32val                            ... bench:           3 ns/iter (+/- 1)
test log_discard_nonempty                          ... bench:           3 ns/iter (+/- 1)
test log_discard_nonempty_10                       ... bench:          13 ns/iter (+/- 1)
test log_filter_out_empty                          ... bench:           2 ns/iter (+/- 0)
test log_stream_empty_json_blackbox_i32closure     ... bench:          66 ns/iter (+/- 10)
test log_stream_empty_json_blackbox_i32pushclosure ... bench:          71 ns/iter (+/- 45)
test log_stream_empty_json_blackbox_i32val         ... bench:          66 ns/iter (+/- 4)
test log_stream_empty_json_blackbox_strclosure     ... bench:         122 ns/iter (+/- 6)
test log_stream_empty_json_blackbox_strpushclosure ... bench:         111 ns/iter (+/- 7)
test log_stream_json_blackbox_i32closure           ... bench:       1,013 ns/iter (+/- 36)
test log_stream_json_blackbox_i32pushclosure       ... bench:       1,024 ns/iter (+/- 21)
test log_stream_json_blackbox_i32val               ... bench:       1,081 ns/iter (+/- 54)
test log_stream_json_blackbox_strclosure           ... bench:       1,077 ns/iter (+/- 42)
test log_stream_json_blackbox_strpushclosure       ... bench:       1,062 ns/iter (+/- 40)
test logger_clone_empty                            ... bench:          20 ns/iter (+/- 1)
test logger_clone_nonempty                         ... bench:          20 ns/iter (+/- 0)
test logger_new_empty                              ... bench:          40 ns/iter (+/- 1)
test logger_new_nonempty                           ... bench:          67 ns/iter (+/- 2)
test logger_new_nonempty_10                        ... bench:         206 ns/iter (+/- 5)

Rework macros - 92c86ef

test log_discard_empty                             ... bench:           2 ns/iter (+/- 0)
test log_discard_i32closure                        ... bench:           4 ns/iter (+/- 1)
test log_discard_i32val                            ... bench:           3 ns/iter (+/- 1)
test log_discard_nonempty                          ... bench:           4 ns/iter (+/- 1)
test log_filter_out_empty                          ... bench:           2 ns/iter (+/- 0)
test log_stream_empty_json_blackbox_i32closure     ... bench:          92 ns/iter (+/- 3)
test log_stream_empty_json_blackbox_i32pushclosure ... bench:          93 ns/iter (+/- 0)
test log_stream_empty_json_blackbox_i32val         ... bench:          93 ns/iter (+/- 5)
test log_stream_empty_json_blackbox_strclosure     ... bench:         169 ns/iter (+/- 6)
test log_stream_empty_json_blackbox_strpushclosure ... bench:         152 ns/iter (+/- 5)
test log_stream_json_blackbox_i32closure           ... bench:       1,052 ns/iter (+/- 36)
test log_stream_json_blackbox_i32pushclosure       ... bench:       1,032 ns/iter (+/- 55)
test log_stream_json_blackbox_i32val               ... bench:       1,044 ns/iter (+/- 70)
test log_stream_json_blackbox_strclosure           ... bench:       1,138 ns/iter (+/- 62)
test log_stream_json_blackbox_strpushclosure       ... bench:       1,117 ns/iter (+/- 34)
test logger_clone_empty                            ... bench:          20 ns/iter (+/- 1)
test logger_clone_nonempty                         ... bench:          20 ns/iter (+/- 1)
test logger_new_empty                              ... bench:          42 ns/iter (+/- 2)
test logger_new_nonempty                           ... bench:          67 ns/iter (+/- 2)

Json without default fields - d0fe9be

test log_discard_empty                             ... bench:           3 ns/iter (+/- 0)
test log_discard_i32closure                        ... bench:           4 ns/iter (+/- 0)
test log_discard_i32val                            ... bench:           4 ns/iter (+/- 0)
test log_discard_nonempty                          ... bench:           4 ns/iter (+/- 1)
test log_filter_out_empty                          ... bench:           3 ns/iter (+/- 0)
test log_stream_empty_json_blackbox_i32closure     ... bench:          92 ns/iter (+/- 6)
test log_stream_empty_json_blackbox_i32pushclosure ... bench:          93 ns/iter (+/- 5)
test log_stream_empty_json_blackbox_i32val         ... bench:          94 ns/iter (+/- 5)
test log_stream_empty_json_blackbox_strclosure     ... bench:         173 ns/iter (+/- 9)
test log_stream_empty_json_blackbox_strpushclosure ... bench:         155 ns/iter (+/- 8)
test log_stream_json_blackbox_i32closure           ... bench:         994 ns/iter (+/- 72)
test log_stream_json_blackbox_i32pushclosure       ... bench:       1,040 ns/iter (+/- 9)
test log_stream_json_blackbox_i32val               ... bench:       1,041 ns/iter (+/- 1)
test log_stream_json_blackbox_strclosure           ... bench:       1,092 ns/iter (+/- 54)
test log_stream_json_blackbox_strpushclosure       ... bench:       1,102 ns/iter (+/- 9)
test logger_clone_empty                            ... bench:          21 ns/iter (+/- 0)
test logger_clone_nonempty                         ... bench:          21 ns/iter (+/- 0)
test logger_new_empty                              ... bench:          43 ns/iter (+/- 2)
test logger_new_nonempty                           ... bench:          70 ns/iter (+/- 3)

Better thread-local io buffers - eda34d6

test log_discard_empty                       ... bench:           3 ns/iter (+/- 0)
test log_discard_i32closure                  ... bench:           4 ns/iter (+/- 0)
test log_discard_i32val                      ... bench:           4 ns/iter (+/- 0)
test log_discard_nonempty                    ... bench:           4 ns/iter (+/- 0)
test log_filter_out_empty                    ... bench:           3 ns/iter (+/- 0)
test log_stream_json_blackbox_i32closure     ... bench:         975 ns/iter (+/- 9)
test log_stream_json_blackbox_i32pushclosure ... bench:         974 ns/iter (+/- 6)
test log_stream_json_blackbox_i32val         ... bench:         974 ns/iter (+/- 5)
test log_stream_json_blackbox_strclosure     ... bench:       1,048 ns/iter (+/- 10)
test log_stream_json_blackbox_strpushclosure ... bench:       1,025 ns/iter (+/- 7)
test logger_clone_empty                      ... bench:          18 ns/iter (+/- 0)
test logger_clone_nonempty                   ... bench:          18 ns/iter (+/- 0)
test logger_new_empty                        ... bench:          41 ns/iter (+/- 0)
test logger_new_nonempty                     ... bench:          66 ns/iter (+/- 0)

Use Box instead of Arc in OwnedKeyValue - 95a75a2 -- after I upgraded my desktop

test log_discard_empty                   ... bench:           5 ns/iter (+/- 0)
test log_discard_i32closure              ... bench:           6 ns/iter (+/- 0)
test log_discard_i32val                  ... bench:           6 ns/iter (+/- 0)
test log_discard_nonempty                ... bench:           6 ns/iter (+/- 0)
test log_stream_json_blackbox_i32closure ... bench:         876 ns/iter (+/- 4)
test log_stream_json_blackbox_i32val     ... bench:         875 ns/iter (+/- 5)
test logger_clone_empty                  ... bench:          18 ns/iter (+/- 0)
test logger_clone_nonempty               ... bench:          19 ns/iter (+/- 0)
test logger_new_empty                    ... bench:          42 ns/iter (+/- 0)
test logger_new_nonempty                 ... bench:          64 ns/iter (+/- 0)

Use Box instead of Arc in OwnedKeyValue - 95a75a2

test log_discard_empty                   ... bench:           7 ns/iter (+/- 0)
test log_discard_i32closure              ... bench:           7 ns/iter (+/- 0)
test log_discard_i32val                  ... bench:           7 ns/iter (+/- 0)
test log_discard_nonempty                ... bench:           7 ns/iter (+/- 0)
test log_stream_json_blackbox_i32closure ... bench:       1,249 ns/iter (+/- 13)
test log_stream_json_blackbox_i32val     ... bench:       1,269 ns/iter (+/- 8)
test logger_clone_empty                  ... bench:          20 ns/iter (+/- 0)
test logger_clone_nonempty               ... bench:          19 ns/iter (+/- 0)
test logger_new_empty                    ... bench:          54 ns/iter (+/- 0)
test logger_new_nonempty                 ... bench:          76 ns/iter (+/- 0)

owned arc chaining - 6a0d69f

test log_discard_empty                   ... bench:           7 ns/iter (+/- 0)
test log_discard_i32closure              ... bench:           7 ns/iter (+/- 0)
test log_discard_i32val                  ... bench:           7 ns/iter (+/- 0)
test log_discard_nonempty                ... bench:           7 ns/iter (+/- 0)
test log_stream_json_blackbox_i32closure ... bench:       1,260 ns/iter (+/- 10)
test log_stream_json_blackbox_i32val     ... bench:       1,260 ns/iter (+/- 2)
test logger_clone_empty                  ... bench:          20 ns/iter (+/- 0)
test logger_clone_nonempty               ... bench:          19 ns/iter (+/- 0)
test logger_new_empty                    ... bench:          52 ns/iter (+/- 0)
test logger_new_nonempty                 ... bench:          87 ns/iter (+/- 0)

bench better - cb037ce

test log_discard_empty                   ... bench:           8 ns/iter (+/- 0)
test log_discard_i32closure              ... bench:           8 ns/iter (+/- 0)
test log_discard_i32val                  ... bench:           8 ns/iter (+/- 0)
test log_discard_nonempty                ... bench:           8 ns/iter (+/- 0)
test log_stream_json_blackbox_i32closure ... bench:       1,251 ns/iter (+/- 14)
test log_stream_json_blackbox_i32val     ... bench:       1,248 ns/iter (+/- 4)
test logger_clone_empty                  ... bench:          22 ns/iter (+/- 0)
test logger_clone_nonempty               ... bench:          54 ns/iter (+/- 0)
test logger_new_empty                    ... bench:          31 ns/iter (+/- 0)
test logger_new_nonempty                 ... bench:         112 ns/iter (+/- 1)

static dispatch - 39e6b5e

test bench::empty_log_discard     ... bench:           5 ns/iter (+/- 0)
test bench::empty_logger_clone    ... bench:          17 ns/iter (+/- 0)
test bench::empty_logger_new      ... bench:          24 ns/iter (+/- 0)
test bench::nonempty_log_discard  ... bench:           5 ns/iter (+/- 1)
test bench::nonempty_logger_clone ... bench:          47 ns/iter (+/- 0)
test bench::nonempty_logger_new   ... bench:         109 ns/iter (+/- 0)

&'a str in RecordInfo - 31912f1

test bench::empty_log_discard     ... bench:          24 ns/iter (+/- 0)
test bench::empty_logger_clone    ... bench:          21 ns/iter (+/- 0)
test bench::empty_logger_new      ... bench:          25 ns/iter (+/- 0)
test bench::nonempty_log_discard  ... bench:          24 ns/iter (+/- 0)
test bench::nonempty_logger_clone ... bench:          51 ns/iter (+/- 0)
test bench::nonempty_logger_new   ... bench:         108 ns/iter (+/- 0)

Lazy ts in RecordInfo - aab82a2

test bench::empty_log_discard     ... bench:          28 ns/iter (+/- 0)
test bench::empty_logger_clone    ... bench:          21 ns/iter (+/- 6)
test bench::empty_logger_new      ... bench:          25 ns/iter (+/- 0)
test bench::nonempty_log_discard  ... bench:          39 ns/iter (+/- 0)
test bench::nonempty_logger_clone ... bench:          52 ns/iter (+/- 3)
test bench::nonempty_logger_new   ... bench:         107 ns/iter (+/- 1)

TL format buffer 43929c2

test bench::empty_log_discard     ... bench:          56 ns/iter (+/- 1)
test bench::empty_logger_clone    ... bench:          21 ns/iter (+/- 0)
test bench::empty_logger_new      ... bench:          25 ns/iter (+/- 0)
test bench::nonempty_log_discard  ... bench:          68 ns/iter (+/- 1)
test bench::nonempty_logger_clone ... bench:          51 ns/iter (+/- 0)
test bench::nonempty_logger_new   ... bench:         107 ns/iter (+/- 1)

Reusing format buffer ff4b78d

test bench::empty_log_discard     ... bench:          55 ns/iter (+/- 0)
test bench::empty_logger_clone    ... bench:          25 ns/iter (+/- 1)
test bench::empty_logger_new      ... bench:          37 ns/iter (+/- 0)
test bench::nonempty_log_discard  ... bench:          66 ns/iter (+/- 0)
test bench::nonempty_logger_clone ... bench:          56 ns/iter (+/- 0)
test bench::nonempty_logger_new   ... bench:         121 ns/iter (+/- 1)

Not reusing format buffer edea27a

test bench::empty_log_discard     ... bench:          54 ns/iter (+/- 0)
test bench::empty_logger_clone    ... bench:          10 ns/iter (+/- 0)
test bench::empty_logger_new      ... bench:          44 ns/iter (+/- 0)
test bench::nonempty_log_discard  ... bench:          65 ns/iter (+/- 1)
test bench::nonempty_logger_clone ... bench:          10 ns/iter (+/- 0)
test bench::nonempty_logger_new   ... bench:         142 ns/iter (+/- 0)