@@ -61,7 +61,7 @@ int main(int argc, char *argv[]) {
6161 exit (1 );
6262 }
6363 const char * filename = argv[optind];
64- pair< u8 *, size_t > p;
64+ simdjsonstring p;
6565 try {
6666 p = get_corpus (filename);
6767 } catch (const std::exception& e) { // caught by reference to base
@@ -70,79 +70,76 @@ int main(int argc, char *argv[]) {
7070 }
7171 if (verbose) {
7272 std::cout << " Input has " ;
73- if (p.second > 1024 * 1024 )
74- std::cout << p.second / (1024 * 1024 ) << " MB " ;
75- else if (p.second > 1024 )
76- std::cout << p.second / 1024 << " KB " ;
73+ if (p.size () > 1024 * 1024 )
74+ std::cout << p.size () / (1024 * 1024 ) << " MB " ;
75+ else if (p.size () > 1024 )
76+ std::cout << p.size () / 1024 << " KB " ;
7777 else
78- std::cout << p.second << " B " ;
78+ std::cout << p.size () << " B " ;
7979 std::cout << std::endl;
8080 }
81- char *buffer = allocate_aligned_buffer (p.second + 1 );
82- memcpy (buffer, p.first , p.second );
83- buffer[p.second ] = ' \0 ' ;
81+ char *buffer = allocate_aligned_buffer (p.size () + 1 );
82+ memcpy (buffer, p.c_str () , p.size () );
83+ buffer[p.size () ] = ' \0 ' ;
8484
8585 int repeat = 10 ;
86- int volume = p.second ;
86+ int volume = p.size () ;
8787
88- size_t strlength = rapidstringme ((char *)p.first ).size ();
88+ size_t strlength = rapidstringme ((char *)p.c_str () ).size ();
8989 if (verbose)
90- std::cout << " input length is " << p.second << " stringified length is "
90+ std::cout << " input length is " << p.size () << " stringified length is "
9191 << strlength << std::endl;
92- BEST_TIME_NOCHECK (" despacing with RapidJSON" , rapidstringme ((char *)p.first ), , repeat, volume, true );
92+ BEST_TIME_NOCHECK (" despacing with RapidJSON" , rapidstringme ((char *)p.c_str () ), , repeat, volume, true );
9393 BEST_TIME_NOCHECK (" despacing with RapidJSON Insitu" , rapidstringmeInsitu ((char *)buffer),
94- memcpy (buffer, p.first , p.second ), repeat, volume, true );
95- memcpy (buffer, p.first , p.second );
94+ memcpy (buffer, p.c_str () , p.size () ), repeat, volume, true );
95+ memcpy (buffer, p.c_str () , p.size () );
9696
9797 size_t outlength =
98- jsonminify ((const uint8_t *)buffer, p.second , (uint8_t *)buffer);
98+ jsonminify ((const uint8_t *)buffer, p.size () , (uint8_t *)buffer);
9999 if (verbose)
100100 std::cout << " jsonminify length is " << outlength << std::endl;
101101
102102 uint8_t *cbuffer = (uint8_t *)buffer;
103- BEST_TIME (" jsonminify" , jsonminify (cbuffer, p.second , cbuffer), outlength,
104- memcpy (buffer, p.first , p.second ), repeat, volume, true );
105- printf (" minisize = %zu, original size = %zu (minified down to %.2f percent of original) \n " , outlength, p.second , outlength * 100.0 / p.second );
103+ BEST_TIME (" jsonminify" , jsonminify (cbuffer, p.size () , cbuffer), outlength,
104+ memcpy (buffer, p.c_str () , p.size () ), repeat, volume, true );
105+ printf (" minisize = %zu, original size = %zu (minified down to %.2f percent of original) \n " , outlength, p.size () , outlength * 100.0 / p.size () );
106106
107107 /* **
108108 * Is it worth it to minify before parsing?
109109 ***/
110110 rapidjson::Document d;
111111 BEST_TIME (" RapidJSON Insitu orig" , d.ParseInsitu (buffer).HasParseError (), false ,
112- memcpy (buffer, p.first , p.second ), repeat, volume, true );
112+ memcpy (buffer, p.c_str () , p.size () ), repeat, volume, true );
113113
114- char *minibuffer = allocate_aligned_buffer (p.second + 1 );
115- size_t minisize = jsonminify ((const uint8_t *)p.first , p.second , (uint8_t *) minibuffer);
114+ char *minibuffer = allocate_aligned_buffer (p.size () + 1 );
115+ size_t minisize = jsonminify ((const uint8_t *)p.c_str () , p.size () , (uint8_t *) minibuffer);
116116 minibuffer[minisize] = ' \0 ' ;
117117
118118 BEST_TIME (" RapidJSON Insitu despaced" , d.ParseInsitu (buffer).HasParseError (), false ,
119- memcpy (buffer, minibuffer, p.second ),
119+ memcpy (buffer, minibuffer, p.size () ),
120120 repeat, volume, true );
121121
122- size_t astbuffersize = p.second * 2 ;
122+ size_t astbuffersize = p.size () * 2 ;
123123 size_t * ast_buffer = (size_t *) malloc (astbuffersize * sizeof (size_t ));
124124
125- BEST_TIME (" sajson orig" , sajson::parse (sajson::bounded_allocation (ast_buffer, astbuffersize), sajson::mutable_string_view (p.second , buffer)).is_valid (), true , memcpy (buffer, p.first , p.second ), repeat, volume, true );
125+ BEST_TIME (" sajson orig" , sajson::parse (sajson::bounded_allocation (ast_buffer, astbuffersize), sajson::mutable_string_view (p.size () , buffer)).is_valid (), true , memcpy (buffer, p.c_str () , p.size () ), repeat, volume, true );
126126
127127
128- BEST_TIME (" sajson despaced" , sajson::parse (sajson::bounded_allocation (ast_buffer, astbuffersize), sajson::mutable_string_view (minisize, buffer)).is_valid (), true , memcpy (buffer, minibuffer, p.second ), repeat, volume, true );
128+ BEST_TIME (" sajson despaced" , sajson::parse (sajson::bounded_allocation (ast_buffer, astbuffersize), sajson::mutable_string_view (minisize, buffer)).is_valid (), true , memcpy (buffer, minibuffer, p.size () ), repeat, volume, true );
129129
130- ParsedJson *pj_ptr = allocate_ParsedJson (p. second , 1024 ) ;
131- ParsedJson & pj (*pj_ptr );
132- BEST_TIME (" json_parse orig" , json_parse ((const u8 *)buffer, p.second , pj), true , memcpy (buffer, p.first , p.second ), repeat, volume, true );
130+ ParsedJson pj ;
131+ pj. allocateCapacity (p. size (), 1024 );
132+ BEST_TIME (" json_parse orig" , json_parse ((const u8 *)buffer, p.size () , pj), true , memcpy (buffer, p.c_str () , p.size () ), repeat, volume, true );
133133
134- ParsedJson *pj_ptr2 = allocate_ParsedJson (p. second , 1024 ) ;
135- ParsedJson & pj2 (*pj_ptr2 );
134+ ParsedJson pj2 ;
135+ pj2. allocateCapacity (p. size (), 1024 );
136136
137137
138- BEST_TIME (" json_parse despaced" , json_parse ((const u8 *)buffer, minisize, pj2), true , memcpy (buffer, minibuffer, p.second ), repeat, volume, true );
138+ BEST_TIME (" json_parse despaced" , json_parse ((const u8 *)buffer, minisize, pj2), true , memcpy (buffer, minibuffer, p.size () ), repeat, volume, true );
139139
140140 free (buffer);
141- free (p.first );
142141 free (ast_buffer);
143142 free (minibuffer);
144- deallocate_ParsedJson (pj_ptr);
145- deallocate_ParsedJson (pj_ptr2);
146143
147144
148145}
0 commit comments