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