Skip to content

Commit e125072

Browse files
mamebyroot
authored andcommitted
Directly use generate_json_string for object keys
... instead of `generate_json`. Since the object key is already confirmed to be a string, using a generic dispatch function brings an unnecessary overhead. This speeds up `JSON.generate` by about 3% in a benchmark.
1 parent 4f9180d commit e125072

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

ext/json/ext/generator/generator.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#include "../fbuffer/fbuffer.h"
22
#include "generator.h"
33

4+
#ifndef RB_UNLIKELY
5+
#define RB_UNLIKELY(cond) (cond)
6+
#endif
7+
48
static VALUE mJSON, mExt, mGenerator, cState, mGeneratorMethods, mObject,
59
mHash, mArray,
610
#ifdef RUBY_INTEGER_UNIFICATION
@@ -678,7 +682,7 @@ json_object_i(VALUE key, VALUE val, VALUE _arg)
678682
break;
679683
}
680684

681-
generate_json(buffer, Vstate, state, key_to_s);
685+
generate_json_string(buffer, Vstate, state, key_to_s);
682686
fbuffer_append(buffer, delim2, delim2_len);
683687
generate_json(buffer, Vstate, state, val);
684688

0 commit comments

Comments
 (0)