1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/tool
k0kubun e72a86fc93 _mjit_compile_send.erb: inline attr_reader call
_mjit_compile_send_guard.erb: carve out the shared logic to invalidate
inlined method call

common.mk: update dependency for this change

test_jit.rb: add test for attr_reader optimization

* Benchmark

```
require 'benchmark_driver'

Benchmark.driver do |x|
  x.prelude %{
    class C
      attr_reader :a
      def initialize
        @a = 1
      end
    end

    o = C.new

    def l o
      i = 0
      while i < 1000000
        o.a
        i += 1
      end
    end
  }
  x.report 'aread', %{ l o }
  x.loop_count 1000

  x.rbenv 'before', 'before,--jit', 'after,--jit'
  x.verbose
end
```

```
before: ruby 2.6.0dev (2018-04-20 trunk 63211) [x86_64-linux]
before,--jit: ruby 2.6.0dev (2018-04-20 trunk 63211) +JIT [x86_64-linux]
after,--jit: ruby 2.6.0dev (2018-04-20 trunk 63211) +JIT [x86_64-linux]
last_commit=_mjit_compile_send.erb: inline attr_reader call
Calculating -------------------------------------
                         before  before,--jit  after,--jit
               aread     54.597       122.894      218.574 i/s -      1.000k times in 18.316102s 8.137089s 4.575106s

Comparison:
                            aread
         after,--jit:       218.6 i/s
        before,--jit:       122.9 i/s - 1.78x  slower
              before:        54.6 i/s - 4.00x  slower

```

* Optcarrot

A little made faster?

fps: 71.35 -> 72.11

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-04-20 13:42:08 +00:00
..
m4 Honor --silent option 2018-04-03 08:29:51 +00:00
ruby_vm _mjit_compile_send.erb: inline attr_reader call 2018-04-20 13:42:08 +00:00
test
asm_parse.rb
bisect.sh tool/bisect.sh: extracted build part [ci skip] 2018-03-01 03:26:05 +00:00
build-transcode
change_maker.rb
checksum.rb
colorize.rb
downloader.rb tool/downloader.rb: retry SocketError 2018-02-05 13:24:00 +00:00
enc-emoji-citrus-gen.rb
enc-emoji4unicode.rb
enc-unicode.rb
eval.rb
expand-config.rb
extlibs.rb
fake.rb
fetch-bundled_gems.rb
file2lastrev.rb
gem-unpack.rb
gen_dummy_probes.rb
gen_ruby_tapset.rb
generate-backport-changelog.rb
generic_erb.rb Refactor ERB version checking for keyword arguments 2018-02-27 11:12:23 +00:00
git-refresh
gperf.sed
id2token.rb
ifchange ifchange: --debug option 2018-02-08 02:08:27 +00:00
insns2vm.rb insns2vm.rb: make #generate_parser private 2018-01-27 02:14:20 +00:00
install-sh
jisx0208.rb
make-snapshot Prefer to use %x instead of backtick. 2018-02-28 11:12:36 +00:00
make_hgraph.rb
mdoc2man.rb
merger.rb
mk_call_iseq_optimized.rb
mkconfig.rb mkconfig.rb: hide MJIT configurations 2018-02-08 15:19:01 +00:00
mkrunnable.rb
node_name.rb
parse.rb
prereq.status
probes_to_wiki.rb
rbinstall.rb
rbuninstall.rb
redmine-backporter.rb
release.sh
rmdirs
run-gcov.rb
run-lcov.rb
runruby.rb
strip-rdoc.rb
sync_default_gems.rb Support upstream directory structure for ruby/csv. 2018-04-03 05:56:16 +00:00
test-coverage.rb make test-all COVERAGE=true supports directory-separated build 2018-04-05 01:05:16 +00:00
transcode-tblgen.rb Refactor ERB version checking for keyword arguments 2018-02-27 11:12:23 +00:00
transform_mjit_header.rb transform_mjit_header.rb: read output and errors 2018-03-17 02:18:46 +00:00
update-deps mjit_compile.c: merge initial JIT compiler 2018-02-04 11:22:28 +00:00
vcs.rb vcs.rb: .git at export 2018-02-26 06:00:08 +00:00
vpath.rb
vtlh.rb
ytab.sed more ytab.sed fixes 2018-01-15 02:39:32 +00:00