diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2020-07-06 00:11:51 -0700 |
---|---|---|
committer | Takashi Kokubun <takashikkbn@gmail.com> | 2020-07-06 00:14:00 -0700 |
commit | 167d139487d67613bd02522e24476f06ffa137b7 (patch) | |
tree | addb108f35c13f7524c5486571b002c71d03b737 /struct.c | |
parent | d94ef7c6b61c89f2c16c1d13af18310b9cd65d89 (diff) |
Inline builtin struct aref
We don't do this for aset because it might raise a FrozenError.
```
$ benchmark-driver -v --rbenv 'before;after;before --jit;after --jit' benchmark/mjit_struct_aref.yml --repeat-count=4
before: ruby 2.8.0dev (2020-07-06T01:47:11Z master d94ef7c6b6) [x86_64-linux]
after: ruby 2.8.0dev (2020-07-06T07:11:51Z master 85425168f4) [x86_64-linux]
last_commit=Inline builtin struct aref
before --jit: ruby 2.8.0dev (2020-07-06T01:47:11Z master d94ef7c6b6) +JIT [x86_64-linux]
after --jit: ruby 2.8.0dev (2020-07-06T07:11:51Z master 85425168f4) +JIT [x86_64-linux]
last_commit=Inline builtin struct aref
Calculating -------------------------------------
before after before --jit after --jit
mjit_struct_aref(struct) 34.783M 34.810M 48.321M 58.378M i/s - 40.000M times in 1.149996s 1.149097s 0.827794s 0.685192s
Comparison:
mjit_struct_aref(struct)
after --jit: 58377836.7 i/s
before --jit: 48321205.7 i/s - 1.21x slower
after: 34809935.5 i/s - 1.68x slower
before: 34782736.5 i/s - 1.68x slower
```
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -324,6 +324,7 @@ static void define_aref_method(VALUE nstr, VALUE name, VALUE off) { const rb_iseq_t *iseq = rb_method_for_self_aref(name, off, &struct_aref_builtin); + iseq->body->builtin_inline_p = true; rb_add_method_iseq(nstr, SYM2ID(name), iseq, NULL, METHOD_VISI_PUBLIC); } |