[flori/json] Convert String encoding using rb_str_encode()
rb_str_encode()
rb_funcall might be slightly heavy to call the Ruby method. This patch will convert String encoding using rb_str_encode() instead of rb_funcall().
rb_funcall
rb_funcall()
$ ruby bench_json_generate.rb Warming up -------------------------------------- json 78.000 i/100ms Calculating ------------------------------------- json 789.781 (± 2.7%) i/s - 3.978k in 5.041043s
$ ruby bench_json_generate.rb Warming up -------------------------------------- json 129.000 i/100ms Calculating ------------------------------------- json 1.300k (± 2.3%) i/s - 6.579k in 5.064656s
require 'json' require 'benchmark/ips' obj = [] 1000.times do |i| obj << { "id" => i, :age => 42, } end Benchmark.ips do |x| x.report "json" do |iter| count = 0 while count < iter JSON.generate(obj) count += 1 end end end
https://github.com/flori/json/commit/9ae6d2969c
[flori/json] Convert String encoding using
rb_str_encode()
rb_funcall
might be slightly heavy to call the Ruby method.This patch will convert String encoding using
rb_str_encode()
instead ofrb_funcall()
.Before¶
After¶
Code¶
https://github.com/flori/json/commit/9ae6d2969c