Add profiling code to the json parser
This commit is contained in:
parent
f11d4481a2
commit
a118afaffb
@ -1,5 +1,7 @@
|
||||
#include "json/parser.h"
|
||||
#include "aliases.h"
|
||||
#include "profiler/ids.h"
|
||||
#include "profiler/timer.h"
|
||||
#include "json/dstring.h"
|
||||
#include "json/json_entities.h"
|
||||
#include "json/lexer.h"
|
||||
@ -21,6 +23,8 @@ INTERNAL jentity_t *add_value(parser_t *parser);
|
||||
INTERNAL void add_collection(parser_t *parser);
|
||||
|
||||
jentity_t *load_json(const char *filepath) {
|
||||
SAMPLE_START(PROFILER_ID_READ_JSON_FILE, "READ JSON FILE");
|
||||
|
||||
FILE *fp = fopen(filepath, "r");
|
||||
|
||||
if (!fp) {
|
||||
@ -40,6 +44,10 @@ jentity_t *load_json(const char *filepath) {
|
||||
|
||||
fclose(fp);
|
||||
|
||||
SAMPLE_END(PROFILER_ID_READ_JSON_FILE);
|
||||
|
||||
SAMPLE_START(PROFILER_ID_PARSER_SETUP, "JSON PARSER SETUP");
|
||||
|
||||
lexer_t *lexer = NULL;
|
||||
parser_t *parser = NULL;
|
||||
|
||||
@ -55,15 +63,23 @@ jentity_t *load_json(const char *filepath) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SAMPLE_END(PROFILER_ID_PARSER_SETUP);
|
||||
|
||||
SAMPLE_START(PROFILER_ID_LEX_GET_TOKEN, "GET NEXT TOKEN");
|
||||
lex_result_t result = get_next_token(lexer, json);
|
||||
SAMPLE_END(PROFILER_ID_LEX_GET_TOKEN);
|
||||
|
||||
if (result.error.errno) {
|
||||
printf("%s\n", result.error.msg);
|
||||
} else {
|
||||
while (result.token.type != TK_NO_TOKEN) {
|
||||
SAMPLE_START(PROFILER_ID_PARSE_TOKEN, "PARSE TOKEN");
|
||||
parse_token(parser, result.token);
|
||||
SAMPLE_END(PROFILER_ID_PARSE_TOKEN);
|
||||
|
||||
SAMPLE_START(PROFILER_ID_LEX_GET_TOKEN, "GET NEXT TOKEN");
|
||||
result = get_next_token(lexer, NULL);
|
||||
SAMPLE_END(PROFILER_ID_LEX_GET_TOKEN);
|
||||
|
||||
if (result.error.errno) {
|
||||
printf("%s\n", result.error.msg);
|
||||
@ -74,10 +90,14 @@ jentity_t *load_json(const char *filepath) {
|
||||
|
||||
jentity_t *root = parser->root;
|
||||
|
||||
SAMPLE_START(PROFILER_ID_PARSER_TEAR_DOWN, "PARSER TEAR DOWN");
|
||||
|
||||
parser_free(&parser);
|
||||
lexer_free(&lexer);
|
||||
free(json);
|
||||
|
||||
SAMPLE_END(PROFILER_ID_PARSER_TEAR_DOWN);
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user