1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/tool/ruby_vm/views
shyouhei 3234245ae3 move ADD_PC around to optimize PC manipluiations
This commit introduces new attribute handles_flame and if that is
_not_ the case, places ADD_PC right after INC_SP.  This improves
locality of PC manipulations to prevents unnecessary register spill-
outs. As a result, it reduces the size of vm_exec_core from 32,688
bytes to 32,384 bytes on my machine.

Speedup is very faint, but certain.

-----------------------------------------------------------
benchmark results:
minimum results in each 3 measurements.
Execution time (sec)
name    before  after
so_ackermann     0.476  0.464
so_array         0.742  0.728
so_binary_trees  5.493  5.466
so_concatenate   3.619  3.395
so_count_words   0.190  0.184
so_exception     0.249  0.239
so_fannkuch      0.994  0.953
so_fasta         1.369  1.374
so_k_nucleotide  1.111  1.111
so_lists         0.470  0.481
so_mandelbrot    2.059  2.050
so_matrix        0.466  0.465
so_meteor_contest        2.712  2.781
so_nbody         1.154  1.204
so_nested_loop   0.852  0.846
so_nsieve        1.636  1.623
so_nsieve_bits   2.073  2.039
so_object        0.616  0.584
so_partial_sums  1.464  1.481
so_pidigits      1.075  1.082
so_random        0.321  0.317
so_reverse_complement    0.555  0.558
so_sieve         0.495  0.490
so_spectralnorm  1.634  1.627

Speedup ratio: compare with the result of `before' (greater is better)
name    after
so_ackermann    1.025
so_array        1.019
so_binary_trees 1.005
so_concatenate  1.066
so_count_words  1.030
so_exception    1.040
so_fannkuch     1.043
so_fasta        0.996
so_k_nucleotide 1.000
so_lists        0.978
so_mandelbrot   1.004
so_matrix       1.001
so_meteor_contest       0.975
so_nbody        0.959
so_nested_loop  1.007
so_nsieve       1.008
so_nsieve_bits  1.017
so_object       1.056
so_partial_sums 0.989
so_pidigits     0.994
so_random       1.014
so_reverse_complement   0.996
so_sieve        1.010
so_spectralnorm 1.004

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-26 06:30:58 +00:00
..
_attributes.erb __VA_ARGS__ is a C99ism 2018-01-13 10:47:33 +00:00
_c_expr.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
_copyright.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
_insn_entry.erb move ADD_PC around to optimize PC manipluiations 2018-01-26 06:30:58 +00:00
_insn_len_info.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
_insn_name_info.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
_insn_operand_info.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
_insn_stack_increase.erb __VA_ARGS__ is a C99ism 2018-01-13 10:47:33 +00:00
_insn_type_chars.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
_notice.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
_trace_instruction.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
insns.inc.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
insns_info.inc.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
opt_sc.inc.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
optinsn.inc.erb tool/ruby_vm support for pre-2.3 BASERUBY 2018-01-12 08:38:10 +00:00
optunifs.inc.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
vm.inc.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00
vmtc.inc.erb delete tool/instruction.rb (2nd try) 2018-01-12 08:38:09 +00:00