ima1zumi / stunning-bassoon

https://ima1zumi.github.io/stunning-bassoon/
MIT License
1 stars 0 forks source link

2022-06-19 #9

Open ima1zumi opened 2 years ago

ima1zumi commented 2 years ago

RubyKaigi 2022 CfP 締め切りの日。

ima1zumi commented 2 years ago

CRubyのビルドするときに使うオプションとかコマンドをまとめた。

CRubyのビルド - :wq

最近結城浩さんのQAを見て、自分の持っている知識はどんどん外に出していこうと思ったのでその一環 https://twitter.com/hyuki/status/1536255703538667520

ima1zumi commented 2 years ago

こんな状態で見ても何がなんだかわからないよ

perf report

image

--no-children したらスッキリしたけど、何が出てるのかわからない

perf report --no-children

image
ima1zumi commented 2 years ago

このあたりにChildとはなんなのか書いているっぽい

https://man7.org/linux/man-pages/man1/perf-report.1.html#OVERHEAD_CALCULATION

ima1zumi commented 2 years ago

呼び出し元の待機時間というかオーバヘッドと理解した

ima1zumi commented 2 years ago

うーん。encodingまわりはこれが重いってことはなくていろんな処理がちょっとずつ重いように見える。これは難しいね...

ima1zumi commented 2 years ago

enc_from_index は複雑でない割に時間かかってる

     1.59%  ruby-optimized  ruby-optimized      [.] enc_from_index
            |
            ---enc_from_index
               |
                --1.54%--rb_enc_from_index
ima1zumi commented 2 years ago

txt も添付しておく。 https://github.com/ima1zumi/stunning-bassoon/issues/9#issuecomment-1159620147

perf_report_stdio.txt perf_report_no_children.txt

ima1zumi commented 2 years ago

いちおう上位をリストアップしておくとこう.

encodingまわりだと mbc_enc_len, enc_from_index, search_nonascii が比較的時間掛かってる

Samples: 2K of event 'cpu-clock', Event count (approx.): 536000000
  Overhead  Command         Shared Object       Symbol
+    9.38%  ruby-optimized  ruby-optimized      [.] vm_exec_core
+    3.26%  ruby-optimized  ruby-optimized      [.] vm_sendish
+    2.29%  ruby-optimized  ruby-optimized      [.] rbimpl_rstring_getmem
+    2.24%  ruby-optimized  ruby-optimized      [.] vm_call_cfunc_with_frame
+    2.24%  ruby-optimized  windows_31j.so      [.] mbc_enc_len
+    1.68%  ruby-optimized  ruby-optimized      [.] vm_getinstancevariable
+    1.59%  ruby-optimized  ruby-optimized      [.] enc_from_index
+    1.40%  ruby-optimized  ruby-optimized      [.] RB_FL_TEST_RAW
+    1.40%  ruby-optimized  ruby-optimized      [.] search_nonascii
ima1zumi commented 2 years ago

windows_31j.so なるものが参照されてるの面白い. CP932のファイル読んでるからだろうな

ima1zumi commented 2 years ago

もうちょい色々な文字列で試してみたいところ

String#split てどういうときに使われるんだろう

ima1zumi commented 2 years ago

ASCII only (UTF-8)

373623はKEN_ALL.CSVの文字数1868115を5で割った数

vagrant@ubuntu-bionic:~$ sudo perf record -g ~/workdir/install_optimized/bin/ruby-optimized -e 'GC.disable; str = "aaaaa,"*373623; str.split(",", -1)'
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.060 MB perf.data (132 samples) ]
Samples: 132  of event 'cpu-clock', Event count (approx.): 33000000
  Overhead  Command         Shared Object      Symbol
+    4.55%  ruby-optimized  ruby-optimized     [.] ruby_yyparse
+    3.03%  ruby-optimized  [kernel.kallsyms]  [k] get_page_from_freelist
+    2.27%  ruby-optimized  [kernel.kallsyms]  [k] __do_page_fault
+    2.27%  ruby-optimized  [kernel.kallsyms]  [k] __softirqentry_text_start
+    2.27%  ruby-optimized  ruby-optimized     [.] RB_IMMEDIATE_P
+    2.27%  ruby-optimized  ruby-optimized     [.] ruby_sip_hash13
+    1.52%  ruby-optimized  libc-2.27.so       [.] __memcpy_avx_unaligned_erms
+    1.52%  ruby-optimized  ruby-optimized     [.] RB_FL_ANY_RAW
+    1.52%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW
+    1.52%  ruby-optimized  ruby-optimized     [.] RB_SPECIAL_CONST_P
+    1.52%  ruby-optimized  ruby-optimized     [.] RB_TEST
+    1.52%  ruby-optimized  ruby-optimized     [.] RB_TYPE_P
+    1.52%  ruby-optimized  ruby-optimized     [.] RSTRING_LEN
+    1.52%  ruby-optimized  ruby-optimized     [.] RSTRING_PTR
+    1.52%  ruby-optimized  ruby-optimized     [.] RVALUE_OLD_P_RAW
+    1.52%  ruby-optimized  ruby-optimized     [.] gc_sweep
+    1.52%  ruby-optimized  ruby-optimized     [.] invoke_block_from_c_bh
+    1.52%  ruby-optimized  ruby-optimized     [.] is_identchar
+    1.52%  ruby-optimized  ruby-optimized     [.] newobj_of
+    1.52%  ruby-optimized  ruby-optimized     [.] newobj_of0
+    1.52%  ruby-optimized  ruby-optimized     [.] onigenc_unicode_is_code_ctype
+    1.52%  ruby-optimized  ruby-optimized     [.] ractor_cache_allocate_slot
+    1.52%  ruby-optimized  ruby-optimized     [.] rb_enc_cr_str_copy_for_substr
+    1.52%  ruby-optimized  ruby-optimized     [.] rbimpl_rstring_getmem
+    1.52%  ruby-optimized  ruby-optimized     [.] split_string
+    1.52%  ruby-optimized  ruby-optimized     [.] str_alloc
+    0.76%  ruby-optimized  [kernel.kallsyms]  [k] __radix_tree_lookup
+    0.76%  ruby-optimized  [kernel.kallsyms]  [k] _raw_spin_unlock_irqrestore
+    0.76%  ruby-optimized  [kernel.kallsyms]  [k] clear_page_rep
+    0.76%  ruby-optimized  [kernel.kallsyms]  [k] common_perm_cond
+    0.76%  ruby-optimized  [kernel.kallsyms]  [k] do_syscall_64
+    0.76%  ruby-optimized  libc-2.27.so       [.] _int_malloc
+    0.76%  ruby-optimized  libc-2.27.so       [.] msort_with_tmp.part.0
+    0.76%  ruby-optimized  ruby-optimized     [.] RB_BUILTIN_TYPE
+    0.76%  ruby-optimized  ruby-optimized     [.] RB_ENCODING_GET
+    0.76%  ruby-optimized  ruby-optimized     [.] RB_ENC_CODERANGE
+    0.76%  ruby-optimized  ruby-optimized     [.] RB_FL_ANY_RAW
+    0.76%  ruby-optimized  ruby-optimized     [.] RB_FL_ANY_RAW
+    0.76%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW

encodingがボトルネックになってませんわよ

ima1zumi commented 2 years ago

UTF-8ならマルチバイトでも全然平気ですわ〜

vagrant@ubuntu-bionic:~$ sudo perf record -g ~/workdir/install_optimized/bin/ruby-optimized -e 'GC.disable; str = "あああああ,"*373623; str.split(",", -1)'
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.088 MB perf.data (169 samples) ]

Samples: 169  of event 'cpu-clock', Event count (approx.): 42250000
  Overhead  Command         Shared Object      Symbol
+    2.37%  ruby-optimized  ruby-optimized     [.] ruby_sip_hash13
+    1.78%  ruby-optimized  ruby-optimized     [.] RVALUE_OLD_P_RAW
+    1.78%  ruby-optimized  ruby-optimized     [.] rb_enc_get_index
+    1.18%  ruby-optimized  libc-2.27.so       [.] __memcpy_avx_unaligned_erms
+    1.18%  ruby-optimized  libc-2.27.so       [.] malloc_usable_size
+    1.18%  ruby-optimized  ruby-optimized     [.] RBASIC_CLASS
+    1.18%  ruby-optimized  ruby-optimized     [.] RB_BUILTIN_TYPE
+    1.18%  ruby-optimized  ruby-optimized     [.] RB_ENCODING_GET
+    1.18%  ruby-optimized  ruby-optimized     [.] RB_OBJ_FREEZE_RAW
+    1.18%  ruby-optimized  ruby-optimized     [.] RB_SPECIAL_CONST_P
+    1.18%  ruby-optimized  ruby-optimized     [.] RB_TYPE_P
+    1.18%  ruby-optimized  ruby-optimized     [.] RSTRING_PTR
+    1.18%  ruby-optimized  ruby-optimized     [.] any_hash
+    1.18%  ruby-optimized  ruby-optimized     [.] gc_aging
+    1.18%  ruby-optimized  ruby-optimized     [.] get_bins_num
+    1.18%  ruby-optimized  ruby-optimized     [.] heap_page_add_freeobj
+    1.18%  ruby-optimized  ruby-optimized     [.] iseq_extract_values
+    1.18%  ruby-optimized  ruby-optimized     [.] magic_comment_marker
+    1.18%  ruby-optimized  ruby-optimized     [.] newobj_fill
+    1.18%  ruby-optimized  ruby-optimized     [.] ractor_cache_allocate_slot
+    1.18%  ruby-optimized  ruby-optimized     [.] rb_enc_cr_str_copy_for_substr
+    1.18%  ruby-optimized  ruby-optimized     [.] rb_iseq_mark
+    1.18%  ruby-optimized  ruby-optimized     [.] rbimpl_fl_unset_raw_raw
+    1.18%  ruby-optimized  ruby-optimized     [.] rbimpl_rstring_getmem
+    1.18%  ruby-optimized  ruby-optimized     [.] tokadd_mbchar
+    1.18%  ruby-optimized  ruby-optimized     [.] vm_exec_core
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] __do_page_fault
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] __handle_mm_fault
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] __inode_permission
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] __softirqentry_text_start
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] clear_page_rep
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] get_page_from_freelist
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] link_path_walk
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] pagevec_lru_move_fn
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] perf_iterate_sb
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] process_measurement
+    0.59%  ruby-optimized  [kernel.kallsyms]  [k] security_file_alloc
+    0.59%  ruby-optimized  ld-2.27.so         [.] do_lookup_x
+    0.59%  ruby-optimized  libc-2.27.so       [.] __GI_____strtoul_l_internal
ima1zumi commented 2 years ago

うーん encode が走る回数に比例している気がする

ima1zumi commented 2 years ago

encode が 10万回走る場合:

GC.disable; 100000.times { "あ,あ,あ,あ,あ,".encode(Encoding::CP932).split(",", -1) }

vagrant@ubuntu-bionic:~$ sudo perf record -g ~/workdir/install_optimized/bin/ruby-optimized -e 'GC.disable; 100000.times { "あ,あ,あ,あ,あ,".encode(Encoding::CP932).split(",", -1) }'
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.150 MB perf.data (398 samples) ]
vagrant@ubuntu-bionic:~$ sudo perf report --no-children
Samples: 398  of event 'cpu-clock', Event count (approx.): 99500000
  Overhead  Command         Shared Object      Symbol
+    5.03%  ruby-optimized  ruby-optimized     [.] transcode_restartable0
+    3.27%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW
+    2.51%  ruby-optimized  ruby-optimized     [.] ruby_yyparse
+    2.51%  ruby-optimized  ruby-optimized     [.] strcasehash
+    2.01%  ruby-optimized  ruby-optimized     [.] enc_from_index
+    2.01%  ruby-optimized  ruby-optimized     [.] rbimpl_atomic_size_cas
+    1.51%  ruby-optimized  ruby-optimized     [.] RSTRING_PTR
+    1.51%  ruby-optimized  ruby-optimized     [.] atomic_sub_nounderflow
+    1.26%  ruby-optimized  ruby-optimized     [.] search_nonascii
+    1.26%  ruby-optimized  ruby-optimized     [.] vm_call_cfunc_with_frame
+    1.26%  ruby-optimized  ruby-optimized     [.] vm_exec_core
+    1.01%  ruby-optimized  ruby-optimized     [.] heap_page_add_freeobj
+    1.01%  ruby-optimized  ruby-optimized     [.] newobj_alloc
+    1.01%  ruby-optimized  ruby-optimized     [.] objspace_xfree
+    1.01%  ruby-optimized  ruby-optimized     [.] rb_gc_obj_slot_size
+    1.01%  ruby-optimized  ruby-optimized     [.] rb_st_locale_insensitive_strcasecmp
+    1.01%  ruby-optimized  ruby-optimized     [.] rbimpl_atomic_size_add
+    1.01%  ruby-optimized  ruby-optimized     [.] rbimpl_rstring_getmem
+    1.01%  ruby-optimized  ruby-optimized     [.] size_pool_slot_size
+    1.01%  ruby-optimized  windows_31j.so     [.] left_adjust_char_head
+    0.75%  ruby-optimized  [kernel.kallsyms]  [k] __softirqentry_text_start
+    0.75%  ruby-optimized  libc-2.27.so       [.] cfree@GLIBC_2.2.5
+    0.75%  ruby-optimized  ruby-optimized     [.] RB_ENCODING_SET_INLINED
+    0.75%  ruby-optimized  ruby-optimized     [.] find_table_entry_ind
+    0.75%  ruby-optimized  ruby-optimized     [.] invoke_block_from_c_bh
+    0.75%  ruby-optimized  ruby-optimized     [.] newobj_init
+    0.75%  ruby-optimized  ruby-optimized     [.] newobj_of
+    0.75%  ruby-optimized  ruby-optimized     [.] objspace_xmalloc0
+    0.75%  ruby-optimized  ruby-optimized     [.] onigenc_unicode_is_code_ctype
+    0.75%  ruby-optimized  ruby-optimized     [.] rb_ec_ractor_ptr
+    0.75%  ruby-optimized  ruby-optimized     [.] rb_enc_from_index
+    0.75%  ruby-optimized  ruby-optimized     [.] rb_enc_get_index
+    0.75%  ruby-optimized  ruby-optimized     [.] rb_scan_args_assign
+    0.75%  ruby-optimized  ruby-optimized     [.] str_new0
+    0.75%  ruby-optimized  ruby-optimized     [.] vm_push_frame
+    0.50%  ruby-optimized  [kernel.kallsyms]  [k] __do_page_fault
+    0.50%  ruby-optimized  [kernel.kallsyms]  [k] _raw_spin_lock
+    0.50%  ruby-optimized  [kernel.kallsyms]  [k] _raw_spin_unlock_irqrestore
+    0.50%  ruby-optimized  [kernel.kallsyms]  [k] try_charge
+    0.50%  ruby-optimized  libc-2.27.so       [.] __libc_malloc
+    0.50%  ruby-optimized  libc-2.27.so       [.] _int_malloc
+    0.50%  ruby-optimized  libc-2.27.so       [.] malloc_usable_size
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_BUILTIN_TYPE
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_ENCODING_GET
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_ENCODING_GET_INLINED
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_ENC_CODERANGE
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_OBJ_FROZEN
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_SPECIAL_CONST_P
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_SPECIAL_CONST_P
+    0.50%  ruby-optimized  ruby-optimized     [.] RB_TEST
+    0.50%  ruby-optimized  ruby-optimized     [.] RSTRING_LEN
+    0.50%  ruby-optimized  ruby-optimized     [.] RUBY_VM_INTERRUPTED_ANY
+    0.50%  ruby-optimized  ruby-optimized     [.] ary_resize_capa
+    0.50%  ruby-optimized  ruby-optimized     [.] do_hash
+    0.50%  ruby-optimized  ruby-optimized     [.] get_bin
+    0.50%  ruby-optimized  ruby-optimized     [.] newobj_fill
+    0.50%  ruby-optimized  ruby-optimized     [.] newobj_of0
+    0.50%  ruby-optimized  ruby-optimized     [.] nlz_int64
+    0.50%  ruby-optimized  ruby-optimized     [.] ractor_cache_allocate_slot
+    0.50%  ruby-optimized  ruby-optimized     [.] ractor_safe_call_cfunc_m1
+    0.50%  ruby-optimized  ruby-optimized     [.] rb_array_len
+    0.50%  ruby-optimized  ruby-optimized     [.] rb_st_lookup
+    0.50%  ruby-optimized  ruby-optimized     [.] rb_str_subseq
+    0.50%  ruby-optimized  ruby-optimized     [.] rbimpl_rstring_getmem
+    0.50%  ruby-optimized  ruby-optimized     [.] ruby_sized_xfree
+    0.50%  ruby-optimized  ruby-optimized     [.] ruby_xmalloc0
+    0.50%  ruby-optimized  ruby-optimized     [.] str_embed_size
+    0.50%  ruby-optimized  ruby-optimized     [.] transcode_loop
+    0.50%  ruby-optimized  ruby-optimized     [.] transcode_search_path
+    0.50%  ruby-optimized  ruby-optimized     [.] vm_ci_argc
+    0.50%  ruby-optimized  windows_31j.so     [.] mbc_enc_len
     0.25%  ruby-optimized  [kernel.kallsyms]  [k] filemap_map_pages
     0.25%  ruby-optimized  [kernel.kallsyms]  [k] finish_task_switch
     0.25%  ruby-optimized  [kernel.kallsyms]  [k] flush_tlb_mm_range
     0.25%  ruby-optimized  [kernel.kallsyms]  [k] get_page_from_freelist
     0.25%  ruby-optimized  [kernel.kallsyms]  [k] sys_mmap_pgoff
     0.25%  ruby-optimized  [kernel.kallsyms]  [k] vm_mmap_pgoff
     0.25%  ruby-optimized  libc-2.27.so       [.] malloc_consolidate
     0.25%  ruby-optimized  ruby-optimized     [.] BSD_vfprintf
ima1zumi commented 2 years ago

encode が1万回走る場合:

文字数は同じ

GC.disable; 10000.times { ("あ,あ,あ,あ,あ,"*10).encode(Encoding::CP932).split(",", -1) }

vagrant@ubuntu-bionic:~$ sudo perf record -g ~/workdir/install_optimized/bin/ruby-optimized -e 'GC.disable; 10000.times { ("あ,あ,あ,あ,あ,"*10).encode(Encoding::CP932).split(",", -1) }'
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.094 MB perf.data (233 samples) ]
vagrant@ubuntu-bionic:~$ sudo perf report --no-children
Samples: 233  of event 'cpu-clock', Event count (approx.): 58250000
  Overhead  Command         Shared Object       Symbol
+    4.72%  ruby-optimized  ruby-optimized      [.] ruby_yyparse
+    3.86%  ruby-optimized  ruby-optimized      [.] transcode_restartable0
+    3.00%  ruby-optimized  ruby-optimized      [.] ruby_sip_hash13
+    3.00%  ruby-optimized  ruby-optimized      [.] str_new0
+    2.15%  ruby-optimized  libc-2.27.so        [.] _int_malloc
+    2.15%  ruby-optimized  ruby-optimized      [.] get_bin
+    1.72%  ruby-optimized  ruby-optimized      [.] enc_from_index
+    1.29%  ruby-optimized  ruby-optimized      [.] RB_FL_ANY_RAW
+    1.29%  ruby-optimized  ruby-optimized      [.] RB_FL_TEST_RAW
+    1.29%  ruby-optimized  ruby-optimized      [.] RVALUE_OLD_P_RAW
+    1.29%  ruby-optimized  ruby-optimized      [.] newobj_alloc
+    1.29%  ruby-optimized  ruby-optimized      [.] newobj_init
+    1.29%  ruby-optimized  ruby-optimized      [.] ractor_cache_allocate_slot
+    1.29%  ruby-optimized  ruby-optimized      [.] rb_ary_push
+    1.29%  ruby-optimized  ruby-optimized      [.] rb_st_lookup
+    1.29%  ruby-optimized  ruby-optimized      [.] rbimpl_rstring_getmem
+    0.86%  ruby-optimized  [kernel.kallsyms]   [k] clear_page_rep
+    0.86%  ruby-optimized  ruby-optimized      [.] RB_BUILTIN_TYPE
+    0.86%  ruby-optimized  ruby-optimized      [.] RB_SPECIAL_CONST_P
+    0.86%  ruby-optimized  ruby-optimized      [.] RB_TEST
+    0.86%  ruby-optimized  ruby-optimized      [.] RVALUE_FLAGS_AGE_SET
+    0.86%  ruby-optimized  ruby-optimized      [.] find_table_entry_ind
+    0.86%  ruby-optimized  ruby-optimized      [.] newobj_of0
+    0.86%  ruby-optimized  ruby-optimized      [.] nextc
+    0.86%  ruby-optimized  ruby-optimized      [.] rb_enc_from_index
+    0.86%  ruby-optimized  ruby-optimized      [.] rb_vm_lock_enter
+    0.86%  ruby-optimized  ruby-optimized      [.] rbimpl_fl_set_raw_raw
+    0.86%  ruby-optimized  ruby-optimized      [.] search_nonascii
+    0.86%  ruby-optimized  ruby-optimized      [.] str_alloc
+    0.86%  ruby-optimized  ruby-optimized      [.] vm_call_cfunc_with_frame
+    0.86%  ruby-optimized  windows_31j.so      [.] left_adjust_char_head
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] __do_page_fault
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] _raw_spin_lock
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] _raw_spin_unlock_irqrestore
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] flush_tlb_mm_range
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] memset
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] page_remove_rmap
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] rw_verify_area
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] strncpy_from_user
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] tlb_finish_mmu
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] unmap_page_range
     0.43%  ruby-optimized  [kernel.kallsyms]   [k] vma_compute_subtree_gap
     0.43%  ruby-optimized  ld-2.27.so          [.] _dl_cache_libcmp
     0.43%  ruby-optimized  libc-2.27.so        [.] __memchr_avx2
     0.43%  ruby-optimized  libc-2.27.so        [.] __memcpy_avx_unaligned_erms
     0.43%  ruby-optimized  libc-2.27.so        [.] __memset_avx2_unaligned
     0.43%  ruby-optimized  libc-2.27.so        [.] cfree@GLIBC_2.2.5
     0.43%  ruby-optimized  libc-2.27.so        [.] getgid
     0.43%  ruby-optimized  libc-2.27.so        [.] handle_intel.constprop.1
     0.43%  ruby-optimized  libc-2.27.so        [.] malloc_usable_size
     0.43%  ruby-optimized  libc-2.27.so        [.] munmap
     0.43%  ruby-optimized  libpthread-2.27.so  [.] pthread_mutex_unlock
     0.43%  ruby-optimized  ruby-optimized      [.] RBASIC_CLASS
     0.43%  ruby-optimized  ruby-optimized      [.] RBASIC_SET_CLASS_RAW
     0.43%  ruby-optimized  ruby-optimized      [.] RB_BUILTIN_TYPE
     0.43%  ruby-optimized  ruby-optimized      [.] RB_BUILTIN_TYPE
     0.43%  ruby-optimized  ruby-optimized      [.] RB_BUILTIN_TYPE
     0.43%  ruby-optimized  ruby-optimized      [.] RB_BUILTIN_TYPE
     0.43%  ruby-optimized  ruby-optimized      [.] RB_ENCODING_GET
     0.43%  ruby-optimized  ruby-optimized      [.] RB_ENCODING_GET_INLINED
     0.43%  ruby-optimized  ruby-optimized      [.] RB_ENCODING_SET_INLINED
     0.43%  ruby-optimized  ruby-optimized      [.] RB_ENC_CODERANGE
     0.43%  ruby-optimized  ruby-optimized      [.] RB_ENC_CODERANGE_SET
     0.43%  ruby-optimized  ruby-optimized      [.] RB_FL_ANY_RAW
     0.43%  ruby-optimized  ruby-optimized      [.] RB_FL_TEST_RAW
     0.43%  ruby-optimized  ruby-optimized      [.] RB_FL_TEST_RAW
     0.43%  ruby-optimized  ruby-optimized      [.] RB_IMMEDIATE_P
     0.43%  ruby-optimized  ruby-optimized      [.] RB_IMMEDIATE_P
     0.43%  ruby-optimized  ruby-optimized      [.] RB_IMMEDIATE_P
     0.43%  ruby-optimized  ruby-optimized      [.] RB_IMMEDIATE_P
     0.43%  ruby-optimized  ruby-optimized      [.] RB_OBJ_FROZEN
     0.43%  ruby-optimized  ruby-optimized      [.] RB_OBJ_FROZEN
     0.43%  ruby-optimized  ruby-optimized      [.] RB_SPECIAL_CONST_P
     0.43%  ruby-optimized  ruby-optimized      [.] RB_SPECIAL_CONST_P
     0.43%  ruby-optimized  ruby-optimized      [.] RB_TEST
     0.43%  ruby-optimized  ruby-optimized      [.] RB_TYPE_P
     0.43%  ruby-optimized  ruby-optimized      [.] RHASH_ST_TABLE_P
     0.43%  ruby-optimized  ruby-optimized      [.] RSTRING_EMBED_LEN
     0.43%  ruby-optimized  ruby-optimized      [.] RSTRING_END
     0.43%  ruby-optimized  ruby-optimized      [.] RSTRING_PTR
ima1zumi commented 2 years ago

GCも外した

agrant@ubuntu-bionic:~$ sudo perf record -g ~/workdir/install_optimized/bin/ruby-optimized -e '100000.times { "あいうえおかきくけこ".encode(Encoding::CP932) }'
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.097 MB perf.data (219 samples) ]
vagrant@ubuntu-bionic:~$ sudo perf report --no-children

Samples: 219  of event 'cpu-clock', Event count (approx.): 54750000
  Overhead  Command         Shared Object      Symbol
+    5.94%  ruby-optimized  ruby-optimized     [.] transcode_restartable0
+    3.20%  ruby-optimized  ruby-optimized     [.] ruby_yyparse
+    2.74%  ruby-optimized  ruby-optimized     [.] rbimpl_atomic_size_add
+    2.28%  ruby-optimized  ruby-optimized     [.] rbimpl_atomic_size_cas
+    1.83%  ruby-optimized  ruby-optimized     [.] do_hash
+    1.83%  ruby-optimized  ruby-optimized     [.] objspace_malloc_increase_body
+    1.83%  ruby-optimized  ruby-optimized     [.] vm_exec_core
+    1.37%  ruby-optimized  ruby-optimized     [.] ractor_cache_allocate_slot
+    1.37%  ruby-optimized  ruby-optimized     [.] rb_enc_from_index
+    1.37%  ruby-optimized  ruby-optimized     [.] rb_vm_exec
+    0.91%  ruby-optimized  libc-2.27.so       [.] __libc_malloc
+    0.91%  ruby-optimized  ruby-optimized     [.] RB_BUILTIN_TYPE
+    0.91%  ruby-optimized  ruby-optimized     [.] RB_ENC_CODERANGE
+    0.91%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW
+    0.91%  ruby-optimized  ruby-optimized     [.] RB_INT2FIX
+    0.91%  ruby-optimized  ruby-optimized     [.] RB_TYPE_P
+    0.91%  ruby-optimized  ruby-optimized     [.] RVALUE_WB_UNPROTECTED
+    0.91%  ruby-optimized  ruby-optimized     [.] VM_ENV_LOCAL_P
+    0.91%  ruby-optimized  ruby-optimized     [.] get_bin
+    0.91%  ruby-optimized  ruby-optimized     [.] heap_page_add_freeobj
+    0.91%  ruby-optimized  ruby-optimized     [.] invoke_block_from_c_bh
+    0.91%  ruby-optimized  ruby-optimized     [.] is_identchar
+    0.91%  ruby-optimized  ruby-optimized     [.] nextc
+    0.91%  ruby-optimized  ruby-optimized     [.] parser_yylex
+    0.91%  ruby-optimized  ruby-optimized     [.] rb_ec_ractor_hooks
+    0.91%  ruby-optimized  ruby-optimized     [.] rb_econv_close
+    0.91%  ruby-optimized  ruby-optimized     [.] rb_enc_get_index
+    0.91%  ruby-optimized  ruby-optimized     [.] rb_multi_ractor_p
+    0.91%  ruby-optimized  ruby-optimized     [.] rb_obj_class
+    0.91%  ruby-optimized  ruby-optimized     [.] rb_str_set_len
+    0.91%  ruby-optimized  ruby-optimized     [.] rbimpl_size_mul_overflow
+    0.91%  ruby-optimized  ruby-optimized     [.] size_pool_idx_for_size
+    0.91%  ruby-optimized  ruby-optimized     [.] strcasehash
     0.46%  ruby-optimized  [kernel.kallsyms]  [k] __do_page_fault
     0.46%  ruby-optimized  [kernel.kallsyms]  [k] __softirqentry_text_start
     0.46%  ruby-optimized  [kernel.kallsyms]  [k] clear_page_rep
     0.46%  ruby-optimized  [kernel.kallsyms]  [k] do_syscall_64
     0.46%  ruby-optimized  [kernel.kallsyms]  [k] get_page_from_freelist
     0.46%  ruby-optimized  [kernel.kallsyms]  [k] security_inode_getattr
     0.46%  ruby-optimized  libc-2.27.so       [.] __memcpy_avx_unaligned_erms
     0.46%  ruby-optimized  libc-2.27.so       [.] cfree@GLIBC_2.2.5
     0.46%  ruby-optimized  libc-2.27.so       [.] malloc_consolidate
     0.46%  ruby-optimized  libc-2.27.so       [.] malloc_usable_size
     0.46%  ruby-optimized  ruby-optimized     [.] RARRAY_ASET
     0.46%  ruby-optimized  ruby-optimized     [.] RB_BUILTIN_TYPE
     0.46%  ruby-optimized  ruby-optimized     [.] RB_BUILTIN_TYPE
     0.46%  ruby-optimized  ruby-optimized     [.] RB_BUILTIN_TYPE
     0.46%  ruby-optimized  ruby-optimized     [.] RB_ENCODING_GET_INLINED
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_ANY_RAW
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_ANY_RAW
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_TEST_RAW
     0.46%  ruby-optimized  ruby-optimized     [.] RB_FL_UNSET_RAW
     0.46%  ruby-optimized  ruby-optimized     [.] RB_IMMEDIATE_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_IMMEDIATE_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_IMMEDIATE_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_IMMEDIATE_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_NIL_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_SPECIAL_CONST_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_SPECIAL_CONST_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_SPECIAL_CONST_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_STATIC_SYM_P
     0.46%  ruby-optimized  ruby-optimized     [.] RB_TEST
     0.46%  ruby-optimized  ruby-optimized     [.] RSTRING_LEN
     0.46%  ruby-optimized  ruby-optimized     [.] RSTRING_PTR
     0.46%  ruby-optimized  ruby-optimized     [.] RSTRING_PTR
     0.46%  ruby-optimized  ruby-optimized     [.] RVALUE_OLD_P
     0.46%  ruby-optimized  ruby-optimized     [.] RVALUE_OLD_P_RAW
     0.46%  ruby-optimized  ruby-optimized     [.] RVALUE_PAGE_OLD_UNCOLLECTIBLE_SET
     0.46%  ruby-optimized  ruby-optimized     [.] VM_ENV_FLAGS
     0.46%  ruby-optimized  ruby-optimized     [.] VM_EP_LEP
     0.46%  ruby-optimized  ruby-optimized     [.] ary_memcpy0
     0.46%  ruby-optimized  ruby-optimized     [.] assignable
     0.46%  ruby-optimized  ruby-optimized     [.] atomic_sub_nounderflow
     0.46%  ruby-optimized  ruby-optimized     [.] attr_leaf_opt_send_without_block
     0.46%  ruby-optimized  ruby-optimized     [.] callable_method_entry
ima1zumi commented 2 years ago

うーん、しかしただの String#encode だと出てくる関数名が違うんだよなぁ 何が違うんだろ...