@@ -15,25 +15,25 @@ could use some work :)
15
15
16
16
| Parser | Duration (ms) | Speed (MB/s) |
17
17
| :-- | --: | --: |
18
- | libfly | 286.788 | 25.668 |
19
- | boost | 72.839 | 101.063 |
20
- | nlohmann | 199.067 | 36.979 |
18
+ | libfly | 236.902 | 31.073 |
19
+ | boost | 67.010 | 109.854 |
20
+ | nlohmann | 197.665 | 37.242 |
21
21
22
22
### [ canada.json] ( /bench/json/data/canada.json )
23
23
24
24
| Parser | Duration (ms) | Speed (MB/s) |
25
25
| :-- | --: | --: |
26
- | libfly | 105.899 | 20.272 |
27
- | boost | 12.037 | 178.353 |
28
- | nlohmann | 54.929 | 39.082 |
26
+ | libfly | 93.639 | 22.926 |
27
+ | boost | 11.822 | 181.592 |
28
+ | nlohmann | 54.645 | 39.285 |
29
29
30
30
### [ gsoc-2018.json] ( /bench/json/data/gsoc-2018.json )
31
31
32
32
| Parser | Duration (ms) | Speed (MB/s) |
33
33
| :-- | --: | --: |
34
- | libfly | 63.754 | 49.780 |
35
- | boost | 14.083 | 225.350 |
36
- | nlohmann | 32.914 | 96.423 |
34
+ | libfly | 42.389 | 74.869 |
35
+ | boost | 14.014 | 226.463 |
36
+ | nlohmann | 33.634 | 94.359 |
37
37
38
38
## Profile
39
39
@@ -44,19 +44,16 @@ constructor.
44
44
Each sample counts as 0.01 seconds.
45
45
% cumulative self self total
46
46
time seconds seconds calls ms/call ms/call name
47
- 46.43 0.13 0.13 3209219 0.00 0.00 fly::Json::Json(fly::Json&&)
48
- 10.71 0.16 0.03 1112064 0.00 0.00 fly::JsonParser::parse_quoted_string[abi:cxx11]()
49
- 7.14 0.18 0.02 4321284 0.00 0.00 fly::Json::~Json()
50
- 7.14 0.20 0.02 1112064 0.00 0.00 fly::Json::push_back(fly::Json&&)
51
- 7.14 0.22 0.02 1112064 0.00 0.00 fly::Json::Json<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)
52
- 3.57 0.23 0.01 4382781 0.00 0.00 std::_Function_handler<unsigned int (), fly::detail::BasicStringUnicode<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::decode_codepoint<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&)::{lambda()#1}>::_M_invoke(std::_Any_data const&)
53
- 3.57 0.24 0.01 3336194 0.00 0.00 fly::JsonParser::consume_whitespace_and_comments()
54
- 3.57 0.25 0.01 2224127 0.00 0.00 fly::JsonParser::consume_token(fly::JsonParser::Token)
55
- 3.57 0.26 0.01 1112065 0.00 0.00 fly::Json::is_object() const
56
- 3.57 0.27 0.01 1112064 0.00 0.00 fly::Json::validate_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)
57
- 3.57 0.28 0.01 1 10.00 201.67 fly::JsonParser::parse_array()
58
- 0.00 0.28 0.00 5560322 0.00 0.00 fly::JsonParser::is_whitespace(fly::JsonParser::Token) const
59
- 0.00 0.28 0.00 5560321 0.00 0.00 fly::JsonParser::consume_whitespace()
47
+ 27.59 0.08 0.08 3209218 0.00 0.00 fly::Json::Json(fly::Json&&)
48
+ 13.79 0.12 0.04 1112064 0.00 0.00 fly::JsonParser::parse_quoted_string[abi:cxx11]()
49
+ 13.79 0.16 0.04 1112064 0.00 0.00 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > fly::Json::convert_to_string<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, false>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)
50
+ 10.34 0.19 0.03 4321279 0.00 0.00 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<void (*)(std::__detail::__variant::_Variant_storage<false, decltype(nullptr), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, fly::Json, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, fly::Json> > >, std::vector<fly::Json, std::allocator<fly::Json> >, bool, long, unsigned long, long double>::_M_reset()::{lambda(auto:1&&)#1}&&, std::variant<decltype(nullptr), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, fly::Json, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, fly::Json> > >, std::vector<fly::Json, std::allocator<fly::Json> >, bool, long, unsigned long, long double>&)>, std::integer_sequence<unsigned long, 1ul> >::__visit_invoke(std::__detail::__variant::_Variant_storage<false, decltype(nullptr), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, fly::Json, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, fly::Json> > >, std::vector<fly::Json, std::allocator<fly::Json> >, bool, long, unsigned long, long double>::_M_reset()::{lambda(auto:1&&)#1}, std::variant<decltype(nullptr), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, fly::Json, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, fly::Json> > >, std::vector<fly::Json, std::allocator<fly::Json> >, bool, long, unsigned long, long double>)
51
+ 6.90 0.21 0.02 5560321 0.00 0.00 fly::JsonParser::consume_whitespace()
52
+ 6.90 0.23 0.02 1112092 0.00 0.00 fly::Json::push_back(fly::Json&&)
53
+ 6.90 0.25 0.02 1112064 0.00 0.00 fly::Json::validate_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)
54
+ 3.45 0.26 0.01 4321284 0.00 0.00 std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<void (*)(std::__detail::__variant::_Variant_storage<false, decltype(nullptr), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, fly::Json, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, fly::Json> > >, std::vector<fly::Json, std::allocator<fly::Json> >, bool, long, unsigned long, long double>::_M_reset()::{lambda(auto:1&&)#1}&&, std::variant<decltype(nullptr), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, fly::Json, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, fly::Json> > >, std::vector<fly::Json, std::allocator<fly::Json> >, bool, long, unsigned long, long double>&)>, std::integer_sequence<unsigned long, 0ul> >::__visit_invoke(std::__detail::__variant::_Variant_storage<false, decltype(nullptr), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, fly::Json, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, fly::Json> > >, std::vector<fly::Json, std::allocator<fly::Json> >, bool, long, unsigned long, long double>::_M_reset()::{lambda(auto:1&&)#1}, std::variant<decltype(nullptr), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, fly::Json, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, fly::Json> > >, std::vector<fly::Json, std::allocator<fly::Json> >, bool, long, unsigned long, long double>)
55
+ 3.45 0.27 0.01 3336194 0.00 0.00 fly::JsonParser::consume_whitespace_and_comments()
56
+ 3.45 0.28 0.01 1112065 0.00 0.00 fly::JsonParser::parse_json()
60
57
```
61
58
62
59
The move constructor is about as simple as it gets:
0 commit comments