-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathParserStressTest.cpp
More file actions
49 lines (39 loc) · 1.39 KB
/
Copy pathParserStressTest.cpp
File metadata and controls
49 lines (39 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef LIPSUM_BUILD_STATIC
# define LIPSUM_IMPLEMENTATION // only for header-only usage
#endif
#include <chrono>
#include <json-c/json.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <lipsum.hpp>
int main()
{
lpsm::Generator gen;
gen.change_setting("jsonLength", 10, 20);
std::string xml = gen.xml(500000);
std::string json = gen.json(6, lpsm::OBJECT);
LIBXML_TEST_VERSION
auto startJson = std::chrono::steady_clock::now();
json_object* obj = json_tokener_parse(json.c_str());
auto endJson = std::chrono::steady_clock::now();
auto startXml = std::chrono::steady_clock::now();
xmlDocPtr doc = xmlReadMemory(xml.c_str(),
xml.size(),
"noname.xml",
NULL,
XML_PARSE_HUGE);
auto endXml = std::chrono::steady_clock::now();
auto milliXml = std::chrono::duration_cast<std::chrono::milliseconds>(
endXml - startXml);
auto milliJson = std::chrono::duration_cast<std::chrono::milliseconds>(
endJson - startJson);
if (doc == NULL)
{
std::cerr << "Failed to parse XML\n";
return -1;
}
std::cout << "Took " << milliXml.count() << " ms to parse XML\n";
std::cout << "Took " << milliJson.count() << " ms to parse JSON\n";
xmlFreeDoc(doc);
return 0;
}