Project

General

Profile

Actions

Feature #13482

open

Improve performance of "set instance variable"

Feature #13482: Improve performance of "set instance variable"

Added by watson1978 (Shizuo Fujita) over 8 years ago. Updated over 6 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:80789]

Description

"set instance variable" will be faster around 14%.

macOS 10.12 + clang-802.0.41

Before

 user system total real 1.550000 0.000000 1.550000 ( 1.555161) 

After

 user system total real 1.400000 0.000000 1.400000 ( 1.398825) 

macOS 10.12 + gcc 6.3.0_1

Before

 user system total real 1.660000 0.000000 1.660000 ( 1.659721) 

After

 user system total real 1.450000 0.000000 1.450000 ( 1.454589) 

Ubuntu 16.04 + gcc 5.4.0

Before

 user system total real 0.890000 0.000000 0.890000 ( 0.891217) 

After

 user system total real 0.790000 0.000000 0.790000 ( 0.783157) 

Test code

require 'benchmark' Benchmark.bmbm do |x| x.report do i = 0 while (i < 50000000) @obj = 42 i+=1 end end end 

Patch

https://github.com/ruby/ruby/pull/1590

Updated by watson1978 (Shizuo Fujita) over 8 years ago Actions #1

  • Description updated (diff)

Updated by watson1978 (Shizuo Fujita) over 8 years ago Actions #2 [ruby-core:80792]

It has already ensured inlining in where vm_getivar()
(https://github.com/ruby/ruby/blob/524fb0138b773f2ed01441abbcffeda0271175c5/vm_insnhelper.c#L908)

So,I'm guessing that there is no reason what avoid inlining at vm_setivar()

Updated by jeremyevans0 (Jeremy Evans) over 6 years ago Actions #3

  • Tracker changed from Bug to Feature
  • Backport deleted (2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN)
Actions

Also available in: PDF Atom