diff options
| author | Yusuke Endoh <mame@ruby-lang.org> | 2023-12-27 16:55:03 +0900 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-10-17 08:54:46 +0000 |
| commit | fb84aa550183dd923d287779c242a12f81e17493 (patch) | |
| tree | 636b31ba6e754a49bf9f1950c52482e6b899989a | |
| parent | 3911189fba46714eec886452b934258e001dd12b (diff) | |
[ruby/json] 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.
https://github.com/ruby/json/commit/e125072130
| -rw-r--r-- | ext/json/generator/generator.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/json/generator/generator.c b/ext/json/generator/generator.c index 92fd33369f..3100e985f8 100644 --- a/ext/json/generator/generator.c +++ b/ext/json/generator/generator.c @@ -1,6 +1,10 @@ #include "../fbuffer/fbuffer.h" #include "generator.h" +#ifndef RB_UNLIKELY +#define RB_UNLIKELY(cond) (cond) +#endif + static VALUE mJSON, mExt, mGenerator, cState, mGeneratorMethods, mObject, mHash, mArray, #ifdef RUBY_INTEGER_UNIFICATION @@ -678,7 +682,7 @@ json_object_i(VALUE key, VALUE val, VALUE _arg) break; } - generate_json(buffer, Vstate, state, key_to_s); + generate_json_string(buffer, Vstate, state, key_to_s); fbuffer_append(buffer, delim2, delim2_len); generate_json(buffer, Vstate, state, val); |
