[ruby-cvs:69269] shyouhei:r62088 (trunk): s/CALL_SIMPLE_METHOD/DISPATCH_ORIGINAL_INSN/

shyouhei at ruby-lang.org shyouhei at ruby-lang.org
Mon Jan 29 16:04:50 JST 2018


shyouhei	2018-01-29 16:04:50 +0900 (Mon, 29 Jan 2018)

  New Revision: 62088

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=62088

  Log:
    s/CALL_SIMPLE_METHOD/DISPATCH_ORIGINAL_INSN/
    
    Now that DISPATCH_ORIGINAL_INSN is introduced, we can replace
    CALL_SIMPLE_METHOD with DISPATCH_ORIGINAL_INSN. These two macros
    differ in size very much and results in this big difference in
    compiled binary size. This changeset reduces the size of
    vm_exec_core from 32,352 bytes to 27,008 bytes on my machine.  As
    a result it yields slightly better performance.
    Closes [GH-1779].
    
    -----------------------------------------------------------
    benchmark results:
    minimum results in each 3 measurements.
    Execution time (sec)
    name    before  after
    so_ackermann     0.484  0.454
    so_array         0.837  0.779
    so_binary_trees  5.928  5.801
    so_concatenate   3.473  3.543
    so_count_words   0.201  0.222
    so_exception     0.255  0.252
    so_fannkuch      1.080  1.019
    so_fasta         1.459  1.463
    so_k_nucleotide  1.218  1.180
    so_lists         0.499  0.484
    so_mandelbrot    2.189  2.324
    so_matrix        0.510  0.496
    so_meteor_contest        3.025  2.925
    so_nbody         1.319  1.273
    so_nested_loop   0.941  0.932
    so_nsieve        1.806  1.647
    so_nsieve_bits   2.151  2.078
    so_object        0.632  0.621
    so_partial_sums  1.560  1.632
    so_pidigits      1.190  1.183
    so_random        0.333  0.353
    so_reverse_complement    0.604  0.586
    so_sieve         0.521  0.481
    so_spectralnorm  1.774  1.722
    
    Speedup ratio: compare with the result of `before' (greater is better)
    name    after
    so_ackermann    1.065
    so_array        1.075
    so_binary_trees 1.022
    so_concatenate  0.980
    so_count_words  0.903
    so_exception    1.009
    so_fannkuch     1.059
    so_fasta        0.997
    so_k_nucleotide 1.032
    so_lists        1.032
    so_mandelbrot   0.942
    so_matrix       1.028
    so_meteor_contest       1.034
    so_nbody        1.036
    so_nested_loop  1.009
    so_nsieve       1.097
    so_nsieve_bits  1.035
    so_object       1.018
    so_partial_sums 0.956
    so_pidigits     1.006
    so_random       0.943
    so_reverse_complement   1.032
    so_sieve        1.083
    so_spectralnorm 1.030

  Modified files:
    trunk/insns.def
    trunk/tool/ruby_vm/models/bare_instructions.rb


More information about the ruby-cvs mailing list