Open ima1zumi opened 2 years ago
CRubyのビルドするときに使うオプションとかコマンドをまとめた。
最近結城浩さんのQAを見て、自分の持っている知識はどんどん外に出していこうと思ったのでその一環 https://twitter.com/hyuki/status/1536255703538667520
こんな状態で見ても何がなんだかわからないよ
perf report
--no-children
したらスッキリしたけど、何が出てるのかわからない
perf report --no-children
このあたりにChildとはなんなのか書いているっぽい
https://man7.org/linux/man-pages/man1/perf-report.1.html#OVERHEAD_CALCULATION
呼び出し元の待機時間というかオーバヘッドと理解した
うーん。encodingまわりはこれが重いってことはなくていろんな処理がちょっとずつ重いように見える。これは難しいね...
enc_from_index は複雑でない割に時間かかってる
1.59% ruby-optimized ruby-optimized [.] enc_from_index
|
---enc_from_index
|
--1.54%--rb_enc_from_index
いちおう上位をリストアップしておくとこう.
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
windows_31j.so なるものが参照されてるの面白い. CP932のファイル読んでるからだろうな
もうちょい色々な文字列で試してみたいところ
String#split てどういうときに使われるんだろう
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がボトルネックになってませんわよ
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
うーん encode
が走る回数に比例している気がする
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
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
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
うーん、しかしただの String#encode だと出てくる関数名が違うんだよなぁ 何が違うんだろ...
RubyKaigi 2022 CfP 締め切りの日。