Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

YJIT: Profile gen_push_frame overhead #540

Closed
k0kubun opened this issue Oct 5, 2023 · 10 comments
Closed

YJIT: Profile gen_push_frame overhead #540

k0kubun opened this issue Oct 5, 2023 · 10 comments

Comments

@k0kubun
Copy link
Member

k0kubun commented Oct 5, 2023

I profiled code generated by gen_push_frame on headline benchmarks with perf record -F max -e cycles and JIT interface.

The following numbers show the number of sampled cycles where instructions generated by gen_push_frame were being executed. The percentage is from the number divided by JITed cycles.

For example, [JIT] C gen_push_frame 1.9% 101927670 means that it spent 1.9% of the time on JIT code for pushing a C frame.

The % roughly represents the potential performance impact of frame outlining for each frame type. For benchmarks where ISEQ gen_push_frame % is larger than C gen_push_frame (e.g. railsbench, lobsters), outlining ISEQ frames might be more important.

activerecord

total cycles: 21945497846
JITed cycles: 3176385314 (14.5%)
[unknown]                  91.2% 2895682386
[JIT] ISEQ gen_push_frame   6.5% 205429056
[JIT] C gen_push_frame      2.4% 75273872

chunky-png

total cycles: 14429381675
JITed cycles: 1604251785 (11.1%)
[unknown]                  92.6% 1485089870
[JIT] C gen_push_frame      4.2% 67944435
[JIT] ISEQ gen_push_frame   3.2% 51217480

erubi-rails

total cycles: 37275709122
JITed cycles: 5012760158 (13.4%)
[unknown]                  90.5% 4538182219
[JIT] ISEQ gen_push_frame   6.9% 346016447
[JIT] C gen_push_frame      2.6% 128561492

hexapdf

total cycles: 52661638715
JITed cycles: 7016271138 (13.3%)
[unknown]                  92.2% 6470526217
[JIT] ISEQ gen_push_frame   5.0% 350761773
[JIT] C gen_push_frame      2.8% 194983148

liquid-c

total cycles: 21052887445
JITed cycles: 1252715494 (6.0%)
[unknown]                  91.6% 1147637375
[JIT] ISEQ gen_push_frame   5.3% 66908584
[JIT] C gen_push_frame      3.0% 38169535

liquid-compile

total cycles: 22533998213
JITed cycles: 1495938998 (6.6%)
[unknown]                  90.9% 1359484661
[JIT] C gen_push_frame      5.3% 78943634
[JIT] ISEQ gen_push_frame   3.8% 57510703

liquid-render

total cycles: 31634185540
JITed cycles: 7178213147 (22.7%)
[unknown]                  92.7% 6653648388
[JIT] ISEQ gen_push_frame   6.0% 433620396
[JIT] C gen_push_frame      1.3% 90944363

lobsters

total cycles: 23234201488
JITed cycles: 2792101493 (12.0%)
[unknown]                  94.8% 2647873033
[JIT] ISEQ gen_push_frame   3.7% 103995157
[JIT] C gen_push_frame      1.4% 40233303

mail

total cycles: 1999014855
JITed cycles: 157848427 (7.9%)
[unknown]                  93.7% 147918797
[JIT] C gen_push_frame      4.0% 6270070
[JIT] ISEQ gen_push_frame   2.3% 3659560

psych-load

total cycles: 89681073777
JITed cycles: 9484936551 (10.6%)
[unknown]                  90.6% 8591221835
[JIT] ISEQ gen_push_frame   8.0% 755216953
[JIT] C gen_push_frame      1.5% 138497763

railsbench

total cycles: 42511659895
JITed cycles: 5462120624 (12.8%)
[unknown]                  93.6% 5111917290
[JIT] ISEQ gen_push_frame   4.5% 248275664
[JIT] C gen_push_frame      1.9% 101927670

ruby-lsp

total cycles: 1066254995
JITed cycles: 159029182 (14.9%)
[unknown]                  94.1% 149622341
[JIT] ISEQ gen_push_frame   3.9% 6272491
[JIT] C gen_push_frame      2.0% 3134350

sequel

total cycles: 618373018
JITed cycles: 26069895 (4.2%)
[unknown]               98.0% 25547019
[JIT] C gen_push_frame   2.0% 522876
@k0kubun k0kubun closed this as completed Oct 5, 2023
@maximecb
Copy link

maximecb commented Oct 5, 2023

Thanks Kokubun, this is very good data to have.

One thing that is striking is how the percentage taken by JIT cycles is so small. Just 12% on lobsters and 11.1% on chunky-png. Makes me wonder where most of the time is spent and if there are obvious bottlenecks worth optimizing in C land.

@maximecb
Copy link

maximecb commented Oct 5, 2023

Also curious to know what the profile looks like for fib and 30k_methods since these microbenchmarks presumably would have 100% in JIT time and much higher percentage taken by push frame.

@k0kubun
Copy link
Member Author

k0kubun commented Oct 5, 2023

One thing that is striking is how the percentage taken by JIT cycles is so small. Just 12% on lobsters and 11.1% on chunky-png. Makes me wonder where most of the time is spent and if there are obvious bottlenecks worth optimizing in C land.

perf report can tell you that part. I'll show the top 100 symbols shown by perf report below. Note that most [JIT] symbols don't show up here since perf report does not aggregate same-name symbols, meaning there are lots of 0.0% samples below them that add up to a larger % in total.

activerecord

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 667K of event 'cycles'
# Event count (approx.): 25080719401
#
# Overhead  Command  Shared Object        Symbol                                                                                                                      
# ........  .......  ...................  ............................................................................................................................................
#
     3.97%  ruby     ruby                 [.] rb_shape_get_iv_index
     2.70%  ruby     ruby                 [.] gc_sweep_step
     2.51%  ruby     ruby                 [.] rb_call0
     1.93%  ruby     ruby                 [.] newobj_alloc
     1.89%  ruby     ruby                 [.] ruby_sip_hash13
     1.87%  ruby     ruby                 [.] rb_funcallv_scope
     1.69%  ruby     ruby                 [.] obj_free
     1.64%  ruby     ruby                 [.] find_table_entry_ind
     1.59%  ruby     ruby                 [.] rb_vm_exec
     1.50%  ruby     ruby                 [.] vm_call_iseq_setup
     1.48%  ruby     ruby                 [.] rb_ivar_get
     1.47%  ruby     ruby                 [.] match_at
     1.30%  ruby     ruby                 [.] vm_callee_setup_block_arg
     1.24%  ruby     libsqlite3.so.0.8.6  [.] sqlite3VdbeExec
     1.16%  ruby     ruby                 [.] find_table_bin_ind
     1.09%  ruby     ruby                 [.] rb_id_table_lookup
     1.08%  ruby     ruby                 [.] callable_method_entry_or_negative
     1.02%  ruby     ruby                 [.] vm_call0_body
     0.99%  ruby     ruby                 [.] invoke_block_from_c_bh
     0.90%  ruby     ruby                 [.] BSD_vfprintf.constprop.0
     0.77%  ruby     libc.so.6            [.] malloc
     0.76%  ruby     ruby                 [.] rb_gc_writebarrier
     0.72%  ruby     ruby                 [.] rb_wb_protected_newobj_of
     0.67%  ruby     ruby                 [.] fstring_cmp
     0.67%  ruby     libc.so.6            [.] pthread_mutex_lock@@GLIBC_2.2.5
     0.65%  ruby     ruby                 [.] rb_gc_obj_slot_size
     0.63%  ruby     ruby                 [.] rb_strftime_with_timespec
     0.60%  ruby     ruby                 [.] rb_vm_send
     0.59%  ruby     libc.so.6            [.] __memmove_avx_unaligned_erms
     0.57%  ruby     ruby                 [.] rb_st_lookup
     0.56%  ruby     ruby                 [.] ar_update
     0.54%  ruby     libc.so.6            [.] _int_malloc
     0.53%  ruby     ruby                 [.] gc_mark_ptr
     0.53%  ruby     ruby                 [.] vm_push_frame
     0.53%  ruby     ruby                 [.] rb_yield
     0.50%  ruby     libc.so.6            [.] pthread_mutex_unlock@@GLIBC_2.2.5
     0.49%  ruby     ruby                 [.] rb_str_hash
     0.47%  ruby     ruby                 [.] rb_obj_class
     0.46%  ruby     ruby                 [.] rb_hash_stlike_delete
     0.44%  ruby     libc.so.6            [.] __memcmp_avx2_movbe
     0.44%  ruby     libc.so.6            [.] cfree@GLIBC_2.2.5
     0.42%  ruby     ruby                 [.] rb_hash_aref
     0.42%  ruby     ruby                 [.] rb_obj_is_kind_of
     0.41%  ruby     ruby                 [.] vm_call0_cc
     0.40%  ruby     ruby                 [.] vm_search_super_method
     0.38%  ruby     libsqlite3.so.0.8.6  [.] sqlite3BtreeTableMoveto
     0.37%  ruby     libc.so.6            [.] __malloc_usable_size
     0.36%  ruby     ruby                 [.] rb_vm_getclassvariable
     0.35%  ruby     ruby                 [.] tbl_update_modify
     0.35%  ruby     ruby                 [.] vm_callee_setup_arg
     0.33%  ruby     ruby                 [.] rb_str_set_len
     0.32%  ruby     libsqlite3.so.0.8.6  [.] sqlite3VdbeHalt
     0.32%  ruby     ruby                 [.] rb_vm_frame_block_handler
     0.32%  ruby     ruby                 [.] opt_equality_by_mid_slowpath
     0.32%  ruby     ruby                 [.] rb_int_parse_cstr
     0.30%  ruby     ruby                 [.] search_nonascii
     0.30%  ruby     ruby                 [.] onig_search_gpos
     0.29%  ruby     ruby                 [.] vm_exec_handle_exception
     0.29%  ruby     ruby                 [.] rb_vm_ic_hit_p
     0.28%  ruby     ruby                 [.] rb_str_concat_literals
     0.28%  ruby     ruby                 [.] rb_ary_push
     0.28%  ruby     ruby                 [.] rb_iseq_mark_and_move
     0.27%  ruby     ruby                 [.] rb_any_hash
     0.27%  ruby     ruby                 [.] tbl_update.isra.0
     0.27%  ruby     ruby                 [.] CALLER_SETUP_ARG
     0.27%  ruby     libc.so.6            [.] _int_free
     0.26%  ruby     ruby                 [.] rb_check_id
     0.26%  ruby     ruby                 [.] rb_str_resize
     0.25%  ruby     ruby                 [.] rb_objspace_garbage_object_p
     0.25%  ruby     ruby                 [.] str_buf_cat4.part.0
     0.24%  ruby     ruby                 [.] rb_str_coderange_scan_restartable
     0.24%  ruby     ruby                 [.] ary_ensure_room_for_push
     0.24%  ruby     ruby                 [.] rb_check_typeddata
     0.24%  ruby     ruby                 [.] rb_ivar_lookup
     0.23%  ruby     ruby                 [.] rb_enc_set_index
     0.22%  ruby     ruby                 [.] rb_equal_opt
     0.22%  ruby     ruby                 [.] vm_throw_start
     0.22%  ruby     ruby                 [.] rb_enc_get_index
     0.21%  ruby     ruby                 [.] gc_writebarrier_generational.constprop.0
     0.21%  ruby     ruby                 [.] rb_yield_values2
     0.21%  ruby     ruby                 [.] rb_enc_associate_index
     0.21%  ruby     ruby                 [.] rb_str_hash_cmp
     0.21%  ruby     ruby                 [.] forward_search_range
     0.21%  ruby     ruby                 [.] rb_block_given_p
     0.21%  ruby     ruby                 [.] vm_call_iseq_setup_normal_0start_0params_0locals
     0.21%  ruby     ruby                 [.] str_new0.constprop.0
     0.20%  ruby     ruby                 [.] rb_reg_prepare_re
     0.20%  ruby     ruby                 [.] rb_enc_get
     0.20%  ruby     ruby                 [.] rb_get_alloc_func
     0.19%  ruby     ruby                 [.] rb_str_free
     0.19%  ruby     ruby                 [.] class_get_alloc_func
     0.19%  ruby     ruby                 [.] ruby__sfvwrite
     0.19%  ruby     ruby                 [.] gc_mark_children
     0.19%  ruby     ruby                 [.] hook_before_rewind
     0.19%  ruby     sqlite3_native.so    [.] step
     0.18%  ruby     libsqlite3.so.0.8.6  [.] sqlite3_step
     0.18%  ruby     ruby                 [.] rb_shape_transition_shape_frozen
     0.18%  ruby     ruby                 [.] rb_st_update
     0.17%  ruby     ruby                 [.] hash_aset_str_insert
     0.17%  ruby     libc.so.6            [.] __memchr_avx2

chunky-png

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 407K of event 'cycles'
# Event count (approx.): 15320175833
#
# Overhead  Command  Shared Object      Symbol                                                                                                                        
# ........  .......  .................  ..................................................................................................................................................................
#
    10.21%  ruby     ruby               [.] invoke_block_from_c_bh
     8.00%  ruby     ruby               [.] rb_vm_exec
     5.94%  ruby     ruby               [.] rb_yield
     4.19%  ruby     ruby               [.] pack_pack
     3.81%  ruby     ruby               [.] str_buf_cat4.part.0
     3.17%  ruby     ruby               [.] vm_push_frame
     3.01%  ruby     ruby               [.] bary_pack
     3.00%  ruby     ruby               [.] rb_str_setbyte
     2.76%  ruby     ruby               [.] vm_callee_setup_block_arg
     2.23%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     2.22%  ruby     ruby               [.] vm_yield_with_cfunc
     2.06%  ruby     ruby               [.] rb_to_int
     2.00%  ruby     ruby               [.] find_table_bin_ind
     1.98%  ruby     ruby               [.] rb_str_getbyte
     1.83%  ruby     ruby               [.] CALLER_SETUP_ARG
     1.83%  ruby     ruby               [.] rb_st_update
     1.72%  ruby     ruby               [.] rb_hash_aref
     1.67%  ruby     ruby               [.] rb_integer_pack
     1.58%  ruby     ruby               [.] each_slice_i
     1.35%  ruby     ruby               [.] rb_str_modify
     1.22%  ruby     ruby               [.] rb_hash_add_new_element
     1.16%  ruby     ruby               [.] ary_ensure_room_for_push
     1.08%  ruby     ruby               [.] rb_ary_push
     1.01%  ruby     ruby               [.] rb_int_and
     0.98%  ruby     libz.so.1.2.11     [.] 0x00000000000081ec
     0.94%  ruby     ruby               [.] rb_any_hash
     0.91%  ruby     ruby               [.] rb_str_buf_cat
     0.87%  ruby     ruby               [.] validate_integer_pack_format
     0.77%  ruby     ruby               [.] rb_vm_bh_to_procval
     0.76%  ruby     ruby               [.] ar_force_convert_table.constprop.0
     0.74%  ruby     ruby               [.] rb_str_set_len
     0.69%  ruby     libc.so.6          [.] __memset_avx2_unaligned_erms
     0.68%  ruby     ruby               [.] rb_ary_uniq
     0.68%  ruby     ruby               [.] rb_fix2int
     0.59%  ruby     ruby               [.] rb_ary_each
     0.52%  ruby     ruby               [.] rb_ec_stack_check
     0.52%  ruby     libz.so.1.2.11     [.] adler32_z
     0.51%  ruby     ruby               [.] rb_enc_from_index
     0.46%  ruby     libc.so.6          [.] _int_malloc
     0.41%  ruby     ruby               [.] add_new_i
     0.41%  ruby     [JIT] tid 48677    [.] [JIT] C gen_push_frame
     0.40%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.35%  ruby     [JIT] tid 48677    [.] 0x000055681165b1f3
     0.33%  ruby     libz.so.1.2.11     [.] 0x0000000000007754
     0.30%  ruby     [JIT] tid 48677    [.] 0x0000556811652653
     0.28%  ruby     ruby               [.] rb_hash_start
     0.27%  ruby     [JIT] tid 48677    [.] 0x0000556811652adb
     0.26%  ruby     libz.so.1.2.11     [.] 0x00000000000081f4
     0.26%  ruby     ruby               [.] int_downto
     0.26%  ruby     libz.so.1.2.11     [.] 0x0000000000007784
     0.25%  ruby     [JIT] tid 48677    [.] 0x000055681165b1d3
     0.24%  ruby     [JIT] tid 48677    [.] 0x000055681165270e
     0.24%  ruby     [JIT] tid 48677    [.] 0x000055681165285a
     0.24%  ruby     ruby               [.] rb_ary_clear
     0.24%  ruby     ruby               [.] gc_mark_ptr
     0.23%  ruby     [JIT] tid 48677    [.] 0x0000556811652c16
     0.23%  ruby     [JIT] tid 48677    [.] 0x0000556811652996
     0.21%  ruby     libc.so.6          [.] __malloc_usable_size
     0.20%  ruby     ruby               [.] gc_sweep_step
     0.20%  ruby     [JIT] tid 48677    [.] 0x000055681165aeed
     0.20%  ruby     ruby               [.] rb_check_convert_type_with_id
     0.20%  ruby     [JIT] tid 48677    [.] 0x000055681165b130
     0.20%  ruby     ruby               [.] rb_iseq_mark_and_move
     0.20%  ruby     [JIT] tid 48677    [.] 0x000055681165af06
     0.20%  ruby     libz.so.1.2.11     [.] 0x00000000000081f1
     0.19%  ruby     [JIT] tid 48677    [.] 0x000055681165b1bc
     0.18%  ruby     [JIT] tid 48677    [.] 0x000055681165b106
     0.17%  ruby     [JIT] tid 48677    [.] 0x000055681165b091
     0.17%  ruby     libc.so.6          [.] _int_free
     0.17%  ruby     [JIT] tid 48677    [.] 0x000055681165b0f7
     0.17%  ruby     libz.so.1.2.11     [.] 0x0000000000002b26
     0.16%  ruby     ruby               [.] newobj_alloc
     0.16%  ruby     libz.so.1.2.11     [.] 0x00000000000081bd
     0.16%  ruby     [JIT] tid 48677    [.] 0x00005568116526b9
     0.16%  ruby     [JIT] tid 48677    [.] 0x000055681165af2f
     0.15%  ruby     [JIT] tid 48677    [.] 0x000055681165af4f
     0.15%  ruby     [JIT] tid 48677    [.] 0x000055681165af9b
     0.15%  ruby     [JIT] tid 48677    [.] 0x000055681165af84
     0.15%  ruby     [JIT] tid 48677    [.] 0x000055681165264f
     0.14%  ruby     ruby               [.] gc_mark_children
     0.14%  ruby     libz.so.1.2.11     [.] 0x000000000000778a
     0.13%  ruby     libz.so.1.2.11     [.] 0x00000000000081d3
     0.13%  ruby     [JIT] tid 48677    [.] 0x000055681165b0ed
     0.13%  ruby     [JIT] tid 48677    [.] 0x00005568116526eb
     0.13%  ruby     [JIT] tid 48677    [.] [JIT] ISEQ gen_push_frame
     0.13%  ruby     libz.so.1.2.11     [.] 0x000000000000775a
     0.13%  ruby     ruby               [.] obj_free
     0.13%  ruby     [JIT] tid 48677    [.] 0x000055681165b1da
     0.13%  ruby     libc.so.6          [.] _int_realloc
     0.13%  ruby     [JIT] tid 48677    [.] 0x000055681165b0cf
     0.12%  ruby     ruby               [.] ar_equal
     0.12%  ruby     ruby               [.] objspace_xrealloc.constprop.0
     0.12%  ruby     [JIT] tid 48677    [.] 0x00005568116526f3
     0.12%  ruby     [JIT] tid 48677    [.] 0x000055681165aff4
     0.12%  ruby     [JIT] tid 48677    [.] 0x000055681165b01e
     0.12%  ruby     [JIT] tid 48677    [.] 0x000055681165afd4
     0.12%  ruby     [JIT] tid 48677    [.] 0x000055681165b043
     0.11%  ruby     libz.so.1.2.11     [.] 0x00000000000081a6
     0.11%  ruby     [JIT] tid 48677    [.] 0x000055681165af1a
     0.11%  ruby     ruby               [.] rb_yjit_iseq_mark

erubi-rails

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 1M of event 'cycles'
# Event count (approx.): 42191395159
#
# Overhead  Command  Shared Object      Symbol
# ........  .......  .................  ............................................
#
     2.28%  ruby     ruby               [.] newobj_alloc
     2.15%  ruby     ruby               [.] gc_sweep_step
     2.01%  ruby     ruby               [.] obj_free
     1.95%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     1.91%  ruby     libc.so.6          [.] _int_malloc
     1.77%  ruby     ruby               [.] find_table_entry_ind
     1.74%  ruby     ruby               [.] rb_call0
     1.58%  ruby     ruby               [.] BSD_vfprintf.constprop.0
     1.43%  ruby     ruby               [.] rb_ivar_get
     1.28%  ruby     ruby               [.] rb_shape_get_iv_index
     1.24%  ruby     ruby               [.] rb_vm_exec
     1.24%  ruby     ruby               [.] rb_wb_protected_newobj_of
     1.20%  ruby     ruby               [.] vm_call_iseq_setup
     1.19%  ruby     ruby               [.] str_buf_cat4.part.0
     1.15%  ruby     ruby               [.] rb_st_lookup
     1.10%  ruby     ruby               [.] rb_str_concat
     0.99%  ruby     escape.so          [.] optimized_escape_html
     0.95%  ruby     libc.so.6          [.] __malloc_usable_size
     0.94%  ruby     ruby               [.] rb_st_update
     0.92%  ruby     ruby               [.] find_table_bin_ind
     0.82%  ruby     ruby               [.] rb_id_table_lookup
     0.79%  ruby     ruby               [.] vm_callee_setup_block_arg
     0.77%  ruby     ruby               [.] gc_mark_ptr
     0.76%  ruby     ruby               [.] rb_funcallv_scope
     0.75%  ruby     libc.so.6          [.] malloc
     0.74%  ruby     ruby               [.] callable_method_entry_or_negative
     0.73%  ruby     ruby               [.] match_at
     0.67%  ruby     ruby               [.] rb_str_buf_append
     0.65%  ruby     ruby               [.] setup_parameters_complex
     0.64%  ruby     ruby               [.] rb_gen_ivtbl_get
     0.63%  ruby     ruby               [.] rb_obj_class
     0.58%  ruby     ruby               [.] rb_hash_aref
     0.57%  ruby     ruby               [.] rb_string_value
     0.57%  ruby     ruby               [.] rb_iseq_mark_and_move
     0.57%  ruby     ruby               [.] opt_equality_by_mid_slowpath
     0.56%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.54%  ruby     ruby               [.] rb_gc_writebarrier
     0.53%  ruby     ruby               [.] rb_any_hash
     0.53%  ruby     ruby               [.] rb_str_format
     0.53%  ruby     libc.so.6          [.] _int_free
     0.48%  ruby     ruby               [.] ar_update
     0.48%  ruby     ruby               [.] vm_call0_body
     0.46%  ruby     date_core.so       [.] date_strftime_with_tmx
     0.44%  ruby     ruby               [.] rb_str_dup
     0.42%  ruby     libc.so.6          [.] unlink_chunk.constprop.0
     0.41%  ruby     libc.so.6          [.] malloc_consolidate
     0.41%  ruby     ruby               [.] BSD__sfvwrite
     0.36%  ruby     ruby               [.] rb_strftime_with_timespec
     0.36%  ruby     ruby               [.] rb_str_concat_multi
     0.36%  ruby     ruby               [.] rb_vm_getclassvariable
     0.36%  ruby     ruby               [.] gc_mark_children
     0.34%  ruby     ruby               [.] invoke_block_from_c_bh
     0.33%  ruby     ruby               [.] rb_str_free
     0.33%  ruby     ruby               [.] class_get_alloc_func
     0.32%  ruby     ruby               [.] vm_call_iseq_bmethod
     0.31%  ruby     ruby               [.] rb_vm_opt_send_without_block
     0.31%  ruby     ruby               [.] rb_hash_add_new_element
     0.31%  ruby     ruby               [.] rb_ary_entry
     0.31%  ruby     ruby               [.] rb_enc_get_index
     0.31%  ruby     ruby               [.] vm_push_frame
     0.31%  ruby     ruby               [.] rb_st_delete
     0.31%  ruby     ruby               [.] ruby_sip_hash13
     0.30%  ruby     ruby               [.] rb_get_alloc_func
     0.29%  ruby     ruby               [.] str_modify_keep_cr
     0.28%  ruby     ruby               [.] search_nonascii
     0.27%  ruby     ruby               [.] objspace_xmalloc0
     0.27%  ruby     ruby               [.] exec_recursive
     0.27%  ruby     [JIT] tid 48735    [.] 0x000055922f892575
     0.27%  ruby     ruby               [.] rb_vm_send
     0.27%  ruby     ruby               [.] rb_enc_set_index
     0.27%  ruby     ruby               [.] rb_ary_and
     0.26%  ruby     ruby               [.] rb_yield_values2
     0.26%  ruby     escape.so          [.] cgiesc_escape_html
     0.25%  ruby     ruby               [.] rb_str_concat_literals
     0.25%  ruby     ruby               [.] onig_search_gpos
     0.24%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     0.24%  ruby     ruby               [.] add_new_i
     0.24%  ruby     ruby               [.] rb_enc_from_index
     0.23%  ruby     ruby               [.] rb_enc_get
     0.23%  ruby     ruby               [.] rb_st_numhash
     0.23%  ruby     ruby               [.] vm_call0_cc
     0.23%  ruby     ruby               [.] rebuild_table
     0.22%  ruby     ruby               [.] vm_callee_setup_arg
     0.22%  ruby     ruby               [.] rb_str_set_len
     0.22%  ruby     ruby               [.] tbl_update_modify
     0.22%  ruby     ruby               [.] vm_search_super_method
     0.22%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.22%  ruby     ruby               [.] vm_exec_handle_exception
     0.22%  ruby     ruby               [.] rb_obj_is_kind_of
     0.22%  ruby     ruby               [.] rb_ec_str_resurrect
     0.21%  ruby     [JIT] tid 48735    [.] 0x000055922f892437
     0.21%  ruby     ruby               [.] vm_invoke_iseq_block
     0.20%  ruby     ruby               [.] ruby_sized_xfree.constprop.0
     0.20%  ruby     ruby               [.] builtin_inline_class_20
     0.20%  ruby     ruby               [.] rb_str_resize
     0.19%  ruby     ruby               [.] rb_hash_stlike_delete
     0.19%  ruby     ruby               [.] rb_ivar_lookup
     0.19%  ruby     ruby               [.] gc_writebarrier_generational.constprop.0
     0.19%  ruby     ruby               [.] rb_yield
     0.19%  ruby     ruby               [.] hash_foreach_call

hexapdf

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 1M of event 'cycles'
# Event count (approx.): 57618835096
#
# Overhead  Command  Shared Object      Symbol                                                                                                                        
# ........  .......  .................  ..................................................................................................................................................................
#
     9.43%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     4.78%  ruby     ruby               [.] rb_shape_get_iv_index
     4.18%  ruby     ruby               [.] vm_exec_core
     3.75%  ruby     ruby               [.] gc_mark_ptr
     3.60%  ruby     ruby               [.] gc_sweep_step
     2.59%  ruby     ruby               [.] rb_vm_exec
     2.22%  ruby     ruby               [.] invoke_block_from_c_bh
     2.14%  ruby     ruby               [.] gc_mark_children
     1.53%  ruby     ruby               [.] vm_call0_body
     1.52%  ruby     ruby               [.] find_table_entry_ind
     1.43%  ruby     ruby               [.] newobj_alloc
     1.34%  ruby     ruby               [.] match_at
     1.33%  ruby     ruby               [.] ary_make_shared
     1.26%  ruby     ruby               [.] rb_funcallv_scope
     1.12%  ruby     ruby               [.] rb_ary_sum
     1.11%  ruby     ruby               [.] vm_push_frame
     1.10%  ruby     ruby               [.] rb_call0
     1.09%  ruby     libc.so.6          [.] __malloc_usable_size
     0.95%  ruby     ruby               [.] obj_free
     0.95%  ruby     ruby               [.] vm_call_cfunc_with_frame
     0.93%  ruby     ruby               [.] vm_callee_setup_block_arg
     0.89%  ruby     libc.so.6          [.] _int_malloc
     0.85%  ruby     ruby               [.] rb_integer_float_cmp
     0.85%  ruby     ruby               [.] rb_yield
     0.81%  ruby     ruby               [.] callable_method_entry_or_negative
     0.80%  ruby     ruby               [.] rb_st_lookup
     0.77%  ruby     ruby               [.] onig_search_gpos
     0.70%  ruby     ruby               [.] vm_call0_cc
     0.68%  ruby     ruby               [.] rb_gc_writebarrier
     0.68%  ruby     ruby               [.] rb_id_table_lookup
     0.65%  ruby     ruby               [.] vm_call_iseq_setup
     0.64%  ruby     ruby               [.] vm_call_ivar
     0.62%  ruby     ruby               [.] rb_hash_aref
     0.54%  ruby     ruby               [.] ary_ensure_room_for_push
     0.52%  ruby     ruby               [.] rb_float_plus
     0.51%  ruby     ruby               [.] rb_ary_push
     0.50%  ruby     ruby               [.] rb_ivar_get
     0.49%  ruby     ruby               [.] rb_check_funcall_basic_kw
     0.49%  ruby     ruby               [.] CALLER_SETUP_ARG
     0.49%  ruby     libc.so.6          [.] unlink_chunk.constprop.0
     0.48%  ruby     ruby               [.] rb_vm_search_method_slowpath
     0.46%  ruby     ruby               [.] rb_obj_hash
     0.46%  ruby     ruby               [.] rb_yjit_iseq_mark
     0.45%  ruby     ruby               [.] rb_any_hash
     0.44%  ruby     libc.so.6          [.] _int_free
     0.41%  ruby     ruby               [.] rb_class_of
     0.40%  ruby     ruby               [.] str_buf_cat4.part.0
     0.39%  ruby     libz.so.1.2.11     [.] 0x0000000000002b26
     0.37%  ruby     ruby               [.] rb_float_minus
     0.36%  ruby     ruby               [.] rb_wb_protected_newobj_of
     0.35%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.34%  ruby     ruby               [.] gc_aging
     0.34%  ruby     ruby               [.] rb_reg_match_m_p
     0.34%  ruby     [JIT] tid 48847    [.] 0x000055dfa3d92025
     0.34%  ruby     ruby               [.] rb_obj_class
     0.33%  ruby     ruby               [.] rb_class_allocate_instance
     0.33%  ruby     ruby               [.] rb_vm_opt_send_without_block
     0.32%  ruby     ruby               [.] ary_memcpy0
     0.30%  ruby     ruby               [.] rb_ary_each
     0.27%  ruby     ruby               [.] count_num_cache_opcodes
     0.27%  ruby     ruby               [.] vm_callee_setup_arg
     0.27%  ruby     libc.so.6          [.] malloc
     0.25%  ruby     ruby               [.] rb_iseq_mark_and_move
     0.25%  ruby     ruby               [.] vm_invoke_proc
     0.24%  ruby     ruby               [.] rb_ary_store
     0.23%  ruby     ruby               [.] rb_obj_ivar_set
     0.22%  ruby     ruby               [.] gc_grey
     0.21%  ruby     ruby               [.] rb_ec_stack_check
     0.21%  ruby     ruby               [.] rb_vm_frame_block_handler
     0.20%  ruby     ruby               [.] rb_str_buf_append
     0.19%  ruby     ruby               [.] rb_float_cmp
     0.19%  ruby     ruby               [.] mbc_enc_len
     0.18%  ruby     ruby               [.] rb_yield_values2
     0.17%  ruby     libm.so.6          [.] __modf
     0.17%  ruby     ruby               [.] gc_continue
     0.17%  ruby     ruby               [.] gc_marks_rest
     0.17%  ruby     ruby               [.] rb_ary_splice
     0.16%  ruby     ruby               [.] obj_any_hash
     0.16%  ruby     ruby               [.] cached_object_id
     0.16%  ruby     [JIT] tid 48847    [.] 0x000055dfa3cf2e04
     0.16%  ruby     ruby               [.] rb_str_concat_literals
     0.16%  ruby     ruby               [.] rb_int_mul
     0.15%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     0.15%  ruby     ruby               [.] class_get_alloc_func
     0.14%  ruby     ruby               [.] rb_yarv_ary_entry_internal
     0.14%  ruby     ruby               [.] rb_shape_get_shape_by_id
     0.13%  ruby     ruby               [.] rb_obj_copy_ivar
     0.13%  ruby     [JIT] tid 48847    [.] 0x000055dfa3cf20b5
     0.13%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.13%  ruby     ruby               [.] gc_start
     0.12%  ruby     ruby               [.] ruby_sip_hash13
     0.12%  ruby     ruby               [.] vm_yield_with_cfunc
     0.12%  ruby     ruby               [.] builtin_inline_class_327
     0.12%  ruby     ruby               [.] rb_reg_prepare_re
     0.12%  ruby     ruby               [.] rb_st_foreach
     0.12%  ruby     ruby               [.] rb_ec_ary_new_from_values
     0.12%  ruby     ruby               [.] flo_lt
     0.12%  ruby     libc.so.6          [.] malloc_consolidate
     0.12%  ruby     [JIT] tid 48847    [.] 0x000055dfa3d0a544
     0.11%  ruby     ruby               [.] rb_int_plus

liquid-c

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 635K of event 'cycles'
# Event count (approx.): 23874364000
#
# Overhead  Command  Shared Object      Symbol                                                                                                                        
# ........  .......  .................  ............................................................................................................................................
#
     4.45%  ruby     ruby               [.] rb_funcallv_scope
     3.62%  ruby     ruby               [.] match_at
     3.25%  ruby     liquid_c.so        [.] vm_render_until_error
     2.74%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     2.66%  ruby     ruby               [.] ruby_sip_hash13
     2.64%  ruby     ruby               [.] callable_method_entry_or_negative
     2.51%  ruby     libc.so.6          [.] _int_malloc
     2.06%  ruby     ruby               [.] find_table_entry_ind
     1.97%  ruby     ruby               [.] vm_call_iseq_setup
     1.80%  ruby     ruby               [.] str_buf_cat4.part.0
     1.76%  ruby     ruby               [.] newobj_alloc
     1.71%  ruby     ruby               [.] rb_vm_exec
     1.61%  ruby     ruby               [.] vm_call0_body
     1.58%  ruby     ruby               [.] obj_free
     1.47%  ruby     ruby               [.] gc_sweep_step
     1.29%  ruby     ruby               [.] BSD_vfprintf.constprop.0
     1.29%  ruby     ruby               [.] rb_id_table_lookup
     1.14%  ruby     ruby               [.] forward_search_range
     0.99%  ruby     ruby               [.] rb_obj_class
     0.97%  ruby     liquid_c.so        [.] context_find_variable
     0.96%  ruby     ruby               [.] rb_shape_get_iv_index
     0.92%  ruby     libc.so.6          [.] __memcmp_avx2_movbe
     0.89%  ruby     ruby               [.] vm_call0_cc
     0.87%  ruby     ruby               [.] rb_wb_protected_newobj_of
     0.85%  ruby     ruby               [.] rb_hash_lookup2
     0.85%  ruby     ruby               [.] rb_hash_aref
     0.84%  ruby     ruby               [.] search_nonascii
     0.83%  ruby     ruby               [.] rb_call0
     0.79%  ruby     ruby               [.] rb_any_hash
     0.76%  ruby     ruby               [.] onig_search_gpos
     0.69%  ruby     libc.so.6          [.] __malloc_usable_size
     0.69%  ruby     ruby               [.] rb_str_buf_append
     0.68%  ruby     generator.so       [.] generate_json_string.constprop.0
     0.67%  ruby     ruby               [.] vm_exec_handle_exception
     0.67%  ruby     libc.so.6          [.] unlink_chunk.constprop.0
     0.66%  ruby     ruby               [.] rb_typeddata_is_kind_of
     0.65%  ruby     libc.so.6          [.] malloc
     0.61%  ruby     ruby               [.] rb_st_lookup
     0.60%  ruby     ruby               [.] rb_str_comparable
     0.59%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.59%  ruby     ruby               [.] method_boundp
     0.57%  ruby     libc.so.6          [.] _int_free
     0.57%  ruby     ruby               [.] ar_equal
     0.55%  ruby     ruby               [.] gc_mark_ptr
     0.54%  ruby     ruby               [.] ruby_dtoa
     0.54%  ruby     ruby               [.] rb_str_hash
     0.53%  ruby     libc.so.6          [.] malloc_consolidate
     0.52%  ruby     ruby               [.] rb_str_format
     0.52%  ruby     liquid_c.so        [.] environments_find_variable
     0.50%  ruby     ruby               [.] vm_respond_to
     0.50%  ruby     liquid_c.so        [.] block_body_render_to_output_buffer
     0.48%  ruby     ruby               [.] rb_gc_writebarrier
     0.48%  ruby     ruby               [.] vm_callee_setup_arg
     0.47%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     0.46%  ruby     ruby               [.] vm_push_frame
     0.45%  ruby     ruby               [.] vm_callee_setup_block_arg
     0.42%  ruby     ruby               [.] rb_hash_has_key
     0.42%  ruby     ruby               [.] rb_str_concat_literals
     0.41%  ruby     ruby               [.] rb_any_cmp
     0.39%  ruby     liquid_c.so        [.] variable_lookup_key
     0.38%  ruby     ruby               [.] vm_throw_start
     0.37%  ruby     ruby               [.] find_table_bin_ind
     0.37%  ruby     ruby               [.] rb_str_set_len
     0.36%  ruby     ruby               [.] invoke_block_from_c_bh
     0.35%  ruby     ruby               [.] rb_str_split_m
     0.35%  ruby     ruby               [.] rb_str_hash_cmp
     0.33%  ruby     ruby               [.] rb_str_buf_cat
     0.29%  ruby     ruby               [.] rb_enc_set_index
     0.28%  ruby     ruby               [.] rb_enc_str_coderange
     0.28%  ruby     ruby               [.] str_modify_keep_cr
     0.28%  ruby     ruby               [.] rb_str_modify
     0.27%  ruby     ruby               [.] ar_update
     0.26%  ruby     ruby               [.] rb_attr_get
     0.26%  ruby     liquid_c.so        [.] resource_limits_increment_write_score
     0.25%  ruby     ruby               [.] rb_str_coderange_scan_restartable
     0.24%  ruby     ruby               [.] gc_mark_children
     0.24%  ruby     liquid_c.so        [.] context_evaluate
     0.24%  ruby     ruby               [.] rb_ivar_get
     0.24%  ruby     ruby               [.] rb_respond_to
     0.24%  ruby     ruby               [.] str_new0.constprop.0
     0.23%  ruby     ruby               [.] rb_str_resize
     0.23%  ruby     ruby               [.] rb_vrescue2
     0.23%  ruby     ruby               [.] coderange_scan
     0.23%  ruby     ruby               [.] CALLER_SETUP_ARG
     0.22%  ruby     ruby               [.] rb_get_alloc_func
     0.22%  ruby     ruby               [.] rb_ary_each
     0.21%  ruby     liquid_c.so        [.] liquid_vm_evaluate
     0.20%  ruby     ruby               [.] rb_hash_default_value
     0.20%  ruby     ruby               [.] rb_str_free
     0.20%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.20%  ruby     ruby               [.] BSD__sfvwrite
     0.20%  ruby     ruby               [.] ruby_sized_xfree.constprop.0
     0.20%  ruby     ruby               [.] rb_reg_search_set_match
     0.19%  ruby     liquid_c.so        [.] write_obj
     0.19%  ruby     ruby               [.] rb_enc_get_index
     0.18%  ruby     ruby               [.] count_num_cache_opcodes
     0.18%  ruby     generator.so       [.] generate_json
     0.18%  ruby     [JIT] tid 49016    [.] 0x000055b9542956d1
     0.18%  ruby     ruby               [.] hook_before_rewind
     0.18%  ruby     ruby               [.] objspace_xmalloc0

liquid-compile

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 639K of event 'cycles'
# Event count (approx.): 24029170849
#
# Overhead  Command  Shared Object      Symbol                                                                                                                        
# ........  .......  .................  ...............................................................................................................................................................................................
#
    23.42%  ruby     ruby               [.] match_at
     4.49%  ruby     ruby               [.] gc_sweep_step
     4.09%  ruby     ruby               [.] gc_mark_ptr
     3.14%  ruby     ruby               [.] obj_free
     2.48%  ruby     libc.so.6          [.] _int_malloc
     2.41%  ruby     ruby               [.] newobj_alloc
     2.27%  ruby     libc.so.6          [.] _int_free
     2.22%  ruby     ruby               [.] gc_mark_children
     2.08%  ruby     libc.so.6          [.] malloc
     2.07%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     2.02%  ruby     ruby               [.] onig_match
     1.83%  ruby     ruby               [.] onig_search_gpos
     1.42%  ruby     ruby               [.] rb_reg_prepare_re
     1.39%  ruby     ruby               [.] rb_wb_protected_newobj_of
     1.26%  ruby     ruby               [.] count_num_cache_opcodes
     1.04%  ruby     ruby               [.] forward_search_range
     1.04%  ruby     ruby               [.] rb_call0
     0.94%  ruby     ruby               [.] rb_iseq_mark_and_move
     0.87%  ruby     strscan.so         [.] strscan_scan
     0.85%  ruby     libc.so.6          [.] __memset_avx2_unaligned_erms
     0.80%  ruby     ruby               [.] rb_gc_writebarrier
     0.74%  ruby     ruby               [.] rb_enc_get_index
     0.59%  ruby     libc.so.6          [.] malloc_consolidate
     0.57%  ruby     ruby               [.] onig_region_free
     0.57%  ruby     ruby               [.] rb_reg_search_set_match
     0.55%  ruby     ruby               [.] str_new0.constprop.0
     0.54%  ruby     libc.so.6          [.] unlink_chunk.constprop.0
     0.52%  ruby     ruby               [.] onig_region_resize
     0.48%  ruby     ruby               [.] rb_reg_onig_match
     0.48%  ruby     ruby               [.] rb_str_start_with
     0.47%  ruby     ruby               [.] gc_aging
     0.46%  ruby     ruby               [.] rb_funcallv_scope
     0.46%  ruby     ruby               [.] vm_call_iseq_setup
     0.46%  ruby     ruby               [.] rb_vm_exec
     0.43%  ruby     ruby               [.] rb_str_free
     0.42%  ruby     ruby               [.] lep_svar_set
     0.41%  ruby     ruby               [.] rb_yjit_iseq_mark
     0.40%  ruby     ruby               [.] ary_ensure_room_for_push
     0.40%  ruby     ruby               [.] rb_shape_get_iv_index
     0.39%  ruby     ruby               [.] rb_ary_push
     0.39%  ruby     ruby               [.] rb_backref_set
     0.38%  ruby     ruby               [.] gc_grey
     0.37%  ruby     ruby               [.] rb_enc_set_index
     0.37%  ruby     ruby               [.] vm_exec_handle_exception
     0.37%  ruby     ruby               [.] rb_check_typeddata
     0.37%  ruby     ruby               [.] gc_continue
     0.36%  ruby     libc.so.6          [.] __memcmp_avx2_movbe
     0.35%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     0.33%  ruby     ruby               [.] str_subseq
     0.32%  ruby     ruby               [.] ruby_sip_hash13
     0.31%  ruby     ruby               [.] rb_obj_class
     0.30%  ruby     ruby               [.] rb_id_table_lookup
     0.30%  ruby     strscan.so         [.] strscan_match
     0.29%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.29%  ruby     ruby               [.] rb_obj_ivar_set
     0.29%  ruby     ruby               [.] rb_backref_get
     0.29%  ruby     strscan.so         [.] strscan_skip
     0.28%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.26%  ruby     libc.so.6          [.] __malloc_usable_size
     0.25%  ruby     ruby               [.] callable_method_entry_or_negative
     0.25%  ruby     ruby               [.] find_table_entry_ind
     0.24%  ruby     ruby               [.] vm_call0_body
     0.24%  ruby     ruby               [.] rb_enc_cr_str_copy_for_substr
     0.24%  ruby     ruby               [.] str_new_frozen_buffer
     0.23%  ruby     ruby               [.] mbc_enc_len
     0.22%  ruby     ruby               [.] gc_start
     0.22%  ruby     ruby               [.] rb_yarv_ary_entry_internal
     0.21%  ruby     ruby               [.] rb_obj_freeze_inline
     0.20%  ruby     ruby               [.] enc_set_index
     0.19%  ruby     ruby               [.] rb_id_table_foreach_values
     0.19%  ruby     ruby               [.] ary_memcpy0
     0.19%  ruby     [JIT] tid 49087    [.] 0x00005630861069be
     0.19%  ruby     ruby               [.] rb_yarv_str_eql_internal
     0.19%  ruby     ruby               [.] vm_call0_cc
     0.18%  ruby     ruby               [.] rb_enc_get
     0.18%  ruby     ruby               [.] onigenc_get_right_adjust_char_head
     0.17%  ruby     ruby               [.] class_get_alloc_func
     0.17%  ruby     ruby               [.] rb_enc_check
     0.17%  ruby     ruby               [.] str_new0
     0.17%  ruby     ruby               [.] rb_class_allocate_instance
     0.17%  ruby     ruby               [.] str_buf_cat4.part.0
     0.17%  ruby     ruby               [.] vm_throw_start
     0.17%  ruby     ruby               [.] rb_ary_shift
     0.16%  ruby     ruby               [.] rb_ec_ary_new_from_values
     0.16%  ruby     ruby               [.] invoke_block_from_c_bh
     0.15%  ruby     ruby               [.] search_nonascii
     0.15%  ruby     ruby               [.] rb_str_subpos
     0.15%  ruby     ruby               [.] rb_gc_mark_and_move
     0.15%  ruby     ruby               [.] rb_vm_mark
     0.14%  ruby     ruby               [.] rb_str_dup_frozen
     0.14%  ruby     ruby               [.] rb_str_scan
     0.13%  ruby     strscan.so         [.] strscan_eos_p
     0.12%  ruby     ruby               [.] rb_enc_associate_index
     0.12%  ruby     ruby               [.] onigenc_get_prev_char_head
     0.12%  ruby     ruby               [.] vm_callee_setup_block_arg
     0.12%  ruby     ruby               [.] cc_table_mark_i
     0.12%  ruby     ruby               [.] must_encindex
     0.12%  ruby     ruby               [.] onig_search
     0.12%  ruby     ruby               [.] rb_equal_opt
     0.11%  ruby     strscan.so         [.] strscan_getch

liquid-render

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 931K of event 'cycles'
# Event count (approx.): 35144713707
#
# Overhead  Command  Shared Object      Symbol                                                                                                                        
# ........  .......  .................  ..................................................................................................................................................................
#
     3.73%  ruby     ruby               [.] ruby_sip_hash13
     2.84%  ruby     ruby               [.] obj_free
     2.76%  ruby     ruby               [.] match_at
     2.71%  ruby     ruby               [.] rb_vm_exec
     2.66%  ruby     ruby               [.] find_table_entry_ind
     2.46%  ruby     ruby               [.] gc_sweep_step
     2.25%  ruby     ruby               [.] invoke_block_from_c_bh
     2.13%  ruby     ruby               [.] newobj_alloc
     2.08%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     1.70%  ruby     libc.so.6          [.] _int_malloc
     1.43%  ruby     ruby               [.] vm_callee_setup_block_arg
     1.35%  ruby     [JIT] tid 49157    [.] 0x0000558dc90a6025
     1.34%  ruby     libc.so.6          [.] __memcmp_avx2_movbe
     1.33%  ruby     [JIT] tid 49157    [.] 0x0000558dc9086032
     1.24%  ruby     ruby               [.] rb_wb_protected_newobj_of
     1.15%  ruby     ruby               [.] str_buf_cat4.part.0
     1.06%  ruby     ruby               [.] vm_exec_handle_exception
     1.05%  ruby     ruby               [.] rb_hash_aref
     0.95%  ruby     ruby               [.] rb_st_lookup
     0.92%  ruby     ruby               [.] rb_str_hash
     0.90%  ruby     ruby               [.] callable_method_entry_or_negative
     0.87%  ruby     ruby               [.] forward_search_range
     0.82%  ruby     ruby               [.] rb_str_comparable
     0.81%  ruby     ruby               [.] rb_gc_writebarrier
     0.80%  ruby     ruby               [.] vm_push_frame
     0.71%  ruby     ruby               [.] rb_yield
     0.65%  ruby     ruby               [.] ary_memcpy0
     0.65%  ruby     ruby               [.] rb_str_hash_cmp
     0.65%  ruby     ruby               [.] rb_id_table_lookup
     0.63%  ruby     ruby               [.] onig_search_gpos
     0.61%  ruby     ruby               [.] rb_hash_has_key
     0.60%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.58%  ruby     ruby               [.] rb_call0
     0.58%  ruby     ruby               [.] vm_call_iseq_setup
     0.58%  ruby     ruby               [.] rb_ary_dup
     0.57%  ruby     ruby               [.] vm_throw_start
     0.57%  ruby     ruby               [.] rb_yarv_ary_entry_internal
     0.56%  ruby     ruby               [.] rb_any_cmp
     0.54%  ruby     ruby               [.] rb_check_convert_type_with_id
     0.52%  ruby     ruby               [.] CALLER_SETUP_ARG
     0.51%  ruby     ruby               [.] rb_shape_get_iv_index
     0.51%  ruby     libc.so.6          [.] __malloc_usable_size
     0.50%  ruby     libc.so.6          [.] malloc
     0.48%  ruby     ruby               [.] BSD_vfprintf.constprop.0
     0.48%  ruby     generator.so       [.] generate_json_string.constprop.0
     0.47%  ruby     ruby               [.] rb_get_symbol_id
     0.47%  ruby     ruby               [.] ar_equal
     0.47%  ruby     ruby               [.] rb_vm_frame_block_handler
     0.46%  ruby     ruby               [.] rb_any_hash
     0.45%  ruby     libc.so.6          [.] _int_free
     0.41%  ruby     ruby               [.] rb_str_format
     0.41%  ruby     ruby               [.] rb_vm_opt_send_without_block
     0.39%  ruby     libc.so.6          [.] unlink_chunk.constprop.0
     0.39%  ruby     [JIT] tid 49157    [.] 0x0000558dc9086b16
     0.37%  ruby     ruby               [.] ruby_dtoa
     0.37%  ruby     ruby               [.] vm_exec_core
     0.35%  ruby     ruby               [.] hook_before_rewind
     0.35%  ruby     libc.so.6          [.] malloc_consolidate
     0.35%  ruby     ruby               [.] rb_str_buf_append
     0.34%  ruby     ruby               [.] rb_ary_each
     0.34%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     0.33%  ruby     ruby               [.] rb_obj_class
     0.33%  ruby     ruby               [.] search_nonascii
     0.32%  ruby     ruby               [.] vm_call_symbol
     0.32%  ruby     ruby               [.] ary_modify_for_unshift
     0.31%  ruby     [JIT] tid 49157    [.] 0x0000558dc908add8
     0.29%  ruby     ruby               [.] rb_str_concat_literals
     0.29%  ruby     ruby               [.] rb_block_given_p
     0.29%  ruby     ruby               [.] find_table_bin_ind
     0.28%  ruby     ruby               [.] rb_enc_set_index
     0.28%  ruby     ruby               [.] rb_ivar_get
     0.27%  ruby     ruby               [.] vm_callee_setup_arg
     0.25%  ruby     ruby               [.] gc_mark_ptr
     0.24%  ruby     ruby               [.] rb_str_split_m
     0.23%  ruby     ruby               [.] rb_enc_str_coderange
     0.22%  ruby     ruby               [.] rb_enc_get
     0.22%  ruby     ruby               [.] rb_funcallv_scope
     0.22%  ruby     ruby               [.] rb_ec_stack_check
     0.22%  ruby     ruby               [.] rb_str_free
     0.22%  ruby     ruby               [.] rb_enc_get_index
     0.20%  ruby     ruby               [.] ar_update
     0.20%  ruby     [JIT] tid 49157    [.] 0x0000558dc9086ae4
     0.20%  ruby     ruby               [.] rb_check_id
     0.20%  ruby     ruby               [.] str_new0.constprop.0
     0.19%  ruby     [JIT] tid 49157    [.] 0x0000558dc90a3931
     0.19%  ruby     [JIT] tid 49157    [.] 0x0000558dc90876a2
     0.19%  ruby     ruby               [.] rb_yjit_set_exception_return
     0.18%  ruby     [JIT] tid 49157    [.] 0x0000558dc908f547
     0.18%  ruby     ruby               [.] rb_str_modify
     0.17%  ruby     ruby               [.] rb_str_coderange_scan_restartable
     0.17%  ruby     ruby               [.] rb_reg_search_set_match
     0.17%  ruby     ruby               [.] rb_get_alloc_func
     0.17%  ruby     ruby               [.] rb_vm_splat_array
     0.16%  ruby     ruby               [.] rb_str_resize
     0.15%  ruby     ruby               [.] ruby_sized_xfree.constprop.0
     0.15%  ruby     ruby               [.] rb_hash_default_value
     0.15%  ruby     ruby               [.] rb_obj_is_kind_of
     0.15%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.15%  ruby     ruby               [.] builtin_inline_class_20
     0.15%  ruby     ruby               [.] str_modify_keep_cr

lobsters

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 685K of event 'cycles'
# Event count (approx.): 25732992461
#
# Overhead  Command  Shared Object       Symbol                                                                                                                       
# ........  .......  ..................  ...............................................................................................................................................................................................
#
     5.19%  ruby     sqlite3_native.so   [.] sqlite3VdbeExec
     3.19%  ruby     ruby                [.] newobj_alloc
     2.24%  ruby     sha2.so             [.] rb_Digest_SHA256_Transform
     1.87%  ruby     ruby                [.] match_at
     1.71%  ruby     libc.so.6           [.] __memmove_avx_unaligned_erms
     1.67%  ruby     libc.so.6           [.] _int_malloc
     1.54%  ruby     ruby                [.] gc_mark_ptr
     1.46%  ruby     ruby                [.] vm_exec_core
     1.33%  ruby     ruby                [.] rb_shape_get_iv_index
     1.30%  ruby     ruby                [.] vm_call_iseq_setup
     1.27%  ruby     ruby                [.] rb_vm_exec
     1.22%  ruby     ruby                [.] find_table_entry_ind
     1.15%  ruby     ruby                [.] rb_call0
     1.12%  ruby     ruby                [.] gc_sweep_step
     1.08%  ruby     ruby                [.] rb_id_table_lookup
     1.07%  ruby     libc.so.6           [.] __malloc_usable_size
     1.05%  ruby     ruby                [.] callable_method_entry_or_negative
     1.02%  ruby     ruby                [.] rb_vm_opt_send_without_block
     1.00%  ruby     ruby                [.] obj_free
     0.95%  ruby     ruby                [.] rb_funcallv_scope
     0.71%  ruby     ruby                [.] rb_vm_search_method_slowpath
     0.70%  ruby     ruby                [.] ruby_sip_hash13
     0.70%  ruby     ruby                [.] vm_callee_setup_block_arg
     0.69%  ruby     sqlite3_native.so   [.] btreeParseCellPtr
     0.65%  ruby     libc.so.6           [.] _int_free
     0.60%  ruby     sqlite3_native.so   [.] sqlite3VdbeRecordCompareWithSkip
     0.59%  ruby     libc.so.6           [.] malloc
     0.59%  ruby     sqlite3_native.so   [.] sqlite3BtreeIndexMoveto
     0.56%  ruby     ruby                [.] vm_call_iseq_setup_normal_0start_0params_0locals
     0.55%  ruby     ruby                [.] rb_gc_writebarrier
     0.55%  ruby     ruby                [.] rb_wb_protected_newobj_of
     0.55%  ruby     ruby                [.] invoke_block_from_c_bh
     0.54%  ruby     libc.so.6           [.] cfree@GLIBC_2.2.5
     0.54%  ruby     ruby                [.] rb_hash_aref
     0.53%  ruby     libc.so.6           [.] malloc_consolidate
     0.52%  ruby     ruby                [.] rb_ivar_get
     0.52%  ruby     ruby                [.] vm_call0_body
     0.49%  ruby     ruby                [.] setup_parameters_complex
     0.48%  ruby     ruby                [.] rb_st_lookup
     0.47%  ruby     sqlite3_native.so   [.] getCellInfo
     0.43%  ruby     ruby                [.] onig_search_gpos
     0.40%  ruby     sqlite3_native.so   [.] pcache1Fetch
     0.40%  ruby     libc.so.6           [.] unlink_chunk.constprop.0
     0.38%  ruby     ruby                [.] find_table_bin_ind
     0.38%  ruby     ruby                [.] rb_any_hash
     0.37%  ruby     sqlite3_native.so   [.] sqlite3VdbeSerialGet
     0.36%  ruby     ruby                [.] rb_vm_send
     0.35%  ruby     ruby                [.] rb_obj_is_kind_of
     0.34%  ruby     sqlite3_native.so   [.] sqlite3BtreeTableMoveto
     0.34%  ruby     ruby                [.] gc_mark_children
     0.33%  ruby     sqlite3_native.so   [.] balance_nonroot
     0.33%  ruby     ruby                [.] ruby_yyparse
     0.32%  ruby     ruby                [.] vm_push_frame
     0.31%  ruby     ruby                [.] rb_yjit_iseq_mark
     0.31%  ruby     ruby                [.] str_buf_cat4.part.0
     0.31%  ruby     sqlite3_native.so   [.] sqlite3BtreeInsert
     0.30%  ruby     ruby                [.] ar_update
     0.29%  ruby     ruby                [.] vm_callee_setup_arg
     0.28%  ruby     ruby                [.] rb_obj_class
     0.28%  ruby     ruby                [.] vm_call_iseq_setup_normal_0start_1params_1locals
     0.26%  ruby     ruby                [.] rb_yield
     0.26%  ruby     ruby                [.] rb_yield_values2
     0.26%  ruby     ruby                [.] rb_gc_obj_slot_size
     0.26%  ruby     ruby                [.] vm_call0_cc
     0.26%  ruby     ruby                [.] vm_call_iseq_bmethod
     0.25%  ruby     ruby                [.] f_muldiv.part.0
     0.25%  ruby     ruby                [.] forward_search_range
     0.24%  ruby     ruby                [.] _ZN4yjit7backend6x86_6446_$LT$impl$u20$yjit..backend..ir..Assembler$GT$17compile_with_regs17h9d0ed6bea04deeb6E.llvm.11276936996120921294
     0.24%  ruby     ruby                [.] CALLER_SETUP_ARG
     0.23%  ruby     sqlite3_native.so   [.] btreeParseCellPtrIndex
     0.23%  ruby     ruby                [.] rb_st_update
     0.22%  ruby     ruby                [.] rb_reg_prepare_re
     0.22%  ruby     ruby                [.] hash_foreach_call
     0.21%  ruby     ruby                [.] rb_hash_fetch_m
     0.21%  ruby     libc.so.6           [.] pthread_mutex_lock@@GLIBC_2.2.5
     0.21%  ruby     sqlite3_native.so   [.] sqlite3BtreeNext.constprop.0
     0.21%  ruby     sqlite3_native.so   [.] getPageNormal
     0.20%  ruby     libc.so.6           [.] __memcmp_avx2_movbe
     0.20%  ruby     ruby                [.] rb_iseq_mark_and_move
     0.20%  ruby     ruby                [.] opt_equality_by_mid_slowpath
     0.20%  ruby     ruby                [.] tbl_update_modify
     0.20%  ruby     ruby                [.] rb_vm_ic_hit_p
     0.20%  ruby     ruby                [.] rb_ary_entry
     0.20%  ruby     libc.so.6           [.] pthread_mutex_unlock@@GLIBC_2.2.5
     0.19%  ruby     ruby                [.] search_nonascii
     0.18%  ruby     sqlite3_native.so   [.] vdbeRecordCompareInt
     0.18%  ruby     ruby                [.] exec_recursive
     0.18%  ruby     ruby                [.] rb_str_concat_literals
     0.18%  ruby     ruby                [.] class_get_alloc_func
     0.18%  ruby     ruby                [.] vm_call_cfunc_with_frame
     0.18%  ruby     ruby                [.] rb_str_hash
     0.18%  ruby     ruby                [.] rb_hash_default_value
     0.18%  ruby     ruby                [.] rb_check_convert_type_with_id
     0.17%  ruby     ruby                [.] BSD_vfprintf.constprop.0
     0.17%  ruby     sqlite3_native.so   [.] sqlite3AtoF.part.0
     0.17%  ruby     sqlite3_native.so   [.] cellSizePtrIdxLeaf
     0.17%  ruby     ruby                [.] tbl_update.isra.0
     0.17%  ruby     [JIT] tid 49245     [.] 0x000055b1093e3001
     0.17%  ruby     libc.so.6           [.] __libc_calloc
     0.17%  ruby     ruby                [.] rb_get_alloc_func

mail

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 56K of event 'cycles'
# Event count (approx.): 2138059373
#
# Overhead  Command  Shared Object      Symbol
# ........  .......  .................  ......................................................
#
     8.84%  ruby     ruby               [.] rb_shape_get_iv_index
     4.94%  ruby     ruby               [.] match_at
     2.83%  ruby     libc.so.6          [.] _int_malloc
     2.74%  ruby     ruby               [.] gc_sweep_step
     2.58%  ruby     ruby               [.] obj_free
     2.11%  ruby     ruby               [.] optimize_node_left
     1.99%  ruby     ruby               [.] str_buf_cat4.part.0
     1.95%  ruby     ruby               [.] rb_yarv_ary_entry_internal
     1.94%  ruby     ruby               [.] newobj_alloc
     1.84%  ruby     ruby               [.] forward_search_range
     1.74%  ruby     ruby               [.] rb_ivar_get
     1.46%  ruby     ruby               [.] rb_wb_protected_newobj_of
     1.43%  ruby     ruby               [.] onig_search_gpos
     1.35%  ruby     libc.so.6          [.] malloc
     1.35%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     1.03%  ruby     libc.so.6          [.] _int_free
     0.98%  ruby     ruby               [.] rb_funcallv_scope
     0.96%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     0.93%  ruby     ruby               [.] rb_vm_exec
     0.90%  ruby     ruby               [.] unescape_nonascii0
     0.82%  ruby     ruby               [.] rb_id_table_lookup
     0.79%  ruby     ruby               [.] callable_method_entry_or_negative
     0.76%  ruby     libc.so.6          [.] malloc_consolidate
     0.68%  ruby     ruby               [.] fetch_token
     0.67%  ruby     libc.so.6          [.] unlink_chunk.constprop.0
     0.67%  ruby     ruby               [.] rb_str_modify
     0.65%  ruby     ruby               [.] invoke_block_from_c_bh
     0.64%  ruby     ruby               [.] str_new0.constprop.0
     0.64%  ruby     ruby               [.] rb_enc_get_index
     0.63%  ruby     ruby               [.] rb_enc_set_index
     0.59%  ruby     ruby               [.] rb_call0
     0.58%  ruby     ruby               [.] tr_trans
     0.57%  ruby     ruby               [.] rb_str_free
     0.56%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.53%  ruby     ruby               [.] rb_gc_writebarrier
     0.49%  ruby     ruby               [.] compile_tree
     0.49%  ruby     ruby               [.] coderange_scan
     0.46%  ruby     libc.so.6          [.] __malloc_usable_size
     0.45%  ruby     ruby               [.] lep_svar_set
     0.43%  ruby     ruby               [.] enc_compatible_latter
     0.42%  ruby     ruby               [.] vm_call_iseq_setup
     0.41%  ruby     ruby               [.] setup_tree
     0.40%  ruby     ruby               [.] rb_reg_search_set_match
     0.40%  ruby     ruby               [.] str_casecmp
     0.40%  ruby     ruby               [.] str_subseq
     0.38%  ruby     ruby               [.] rb_hash_aref
     0.38%  ruby     ruby               [.] search_nonascii
     0.37%  ruby     ruby               [.] vm_call0_body
     0.36%  ruby     ruby               [.] rb_enc_from_index
     0.34%  ruby     ruby               [.] rb_obj_class
     0.33%  ruby     ruby               [.] vm_callee_setup_block_arg
     0.33%  ruby     ruby               [.] BSD_vfprintf.constprop.0
     0.33%  ruby     ruby               [.] rb_vm_search_method_slowpath
     0.32%  ruby     ruby               [.] mbc_enc_len
     0.32%  ruby     ruby               [.] gc_mark_ptr
     0.32%  ruby     ruby               [.] parse_exp
     0.31%  ruby     ruby               [.] rb_str_buf_append
     0.31%  ruby     ruby               [.] rb_str_buf_cat
     0.30%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.30%  ruby     ruby               [.] rb_backref_set
     0.30%  ruby     ruby               [.] rb_reg_prepare_re
     0.30%  ruby     ruby               [.] count_num_cache_opcodes
     0.30%  ruby     ruby               [.] rb_enc_cr_str_copy_for_substr
     0.29%  ruby     ruby               [.] rb_yield
     0.27%  ruby     ruby               [.] enc_set_index
     0.27%  ruby     ruby               [.] bitset_set_range
     0.27%  ruby     ruby               [.] onig_compile_ruby
     0.27%  ruby     ruby               [.] vm_push_frame
     0.27%  ruby     libc.so.6          [.] __memset_avx2_unaligned_erms
     0.26%  ruby     ruby               [.] rb_shape_get_shape_by_id
     0.25%  ruby     ruby               [.] rb_enc_precise_mbclen
     0.25%  ruby     ruby               [.] ruby_sip_hash13
     0.25%  ruby     ruby               [.] vm_exec_core
     0.25%  ruby     ruby               [.] find_table_bin_ind
     0.24%  ruby     ruby               [.] parse_enclose.constprop.0
     0.23%  ruby     ruby               [.] us_ascii_mbc_enc_len
     0.22%  ruby     ruby               [.] rb_enc_str_coderange
     0.22%  ruby     ruby               [.] str_modify_keep_cr
     0.22%  ruby     ruby               [.] find_table_entry_ind
     0.22%  ruby     ruby               [.] rb_str_downcase
     0.22%  ruby     ruby               [.] rb_obj_freeze_inline
     0.21%  ruby     ruby               [.] setup_parameters_complex
     0.21%  ruby     ruby               [.] rb_str_concat_literals
     0.21%  ruby     ruby               [.] rb_check_convert_type_with_id
     0.21%  ruby     ruby               [.] rb_reg_expr_str
     0.21%  ruby     ruby               [.] rb_str_aref_m
     0.21%  ruby     ruby               [.] rb_vm_opt_send_without_block
     0.20%  ruby     ruby               [.] onig_region_free
     0.20%  ruby     ruby               [.] rb_vm_send
     0.19%  ruby     ruby               [.] str_new_frozen_buffer
     0.19%  ruby     ruby               [.] vm_call0_cc
     0.18%  ruby     ruby               [.] rb_str_subpos
     0.18%  ruby     ruby               [.] rb_string_value
     0.17%  ruby     ruby               [.] parse_char_class
     0.17%  ruby     ruby               [.] ar_update
     0.17%  ruby     ruby               [.] onig_node_free
     0.17%  ruby     ruby               [.] onigenc_ascii_is_code_ctype
     0.17%  ruby     ruby               [.] rb_enc_codepoint_len
     0.17%  ruby     ruby               [.] str_replace_shared_without_enc.isra.0
     0.16%  ruby     ruby               [.] rb_reg_new_ary

psych-load

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 2M of event 'cycles'
# Event count (approx.): 101824188914
#
# Overhead  Command  Shared Object       Symbol
# ........  .......  ..................  ......................................................
#
     6.32%  ruby     libyaml-0.so.2.0.6  [.] yaml_parser_fetch_more_tokens
     6.25%  ruby     ruby                [.] match_at
     5.04%  ruby     ruby                [.] rb_shape_get_iv_index
     3.74%  ruby     libyaml-0.so.2.0.6  [.] yaml_parser_update_buffer
     2.47%  ruby     ruby                [.] rb_vm_exec
     2.43%  ruby     ruby                [.] rb_obj_ivar_set
     2.24%  ruby     ruby                [.] vm_call_iseq_setup
     2.08%  ruby     libc.so.6           [.] _int_free
     1.98%  ruby     ruby                [.] rb_funcallv_scope
     1.88%  ruby     ruby                [.] find_table_bin_ind
     1.68%  ruby     libc.so.6           [.] malloc
     1.63%  ruby     ruby                [.] vm_call0_body
     1.56%  ruby     libyaml-0.so.2.0.6  [.] yaml_parser_parse
     1.51%  ruby     ruby                [.] ruby_sip_hash13
     1.33%  ruby     ruby                [.] obj_free
     1.28%  ruby     ruby                [.] gc_mark_children
     1.27%  ruby     ruby                [.] rb_protect
     1.24%  ruby     ruby                [.] gc_sweep_step
     1.18%  ruby     libyaml-0.so.2.0.6  [.] yaml_event_delete
     1.17%  ruby     psych.so            [.] parse
     1.10%  ruby     ruby                [.] onig_search_gpos
     1.03%  ruby     ruby                [.] gc_mark_ptr
     1.01%  ruby     ruby                [.] rb_call0
     0.99%  ruby     ruby                [.] newobj_alloc
     0.88%  ruby     libc.so.6           [.] cfree@GLIBC_2.2.5
     0.85%  ruby     ruby                [.] vm_callee_setup_arg
     0.81%  ruby     libc.so.6           [.] _int_malloc
     0.79%  ruby     ruby                [.] rb_shape_get_next
     0.76%  ruby     ruby                [.] rb_obj_class
     0.75%  ruby     ruby                [.] vm_call0_cc
     0.74%  ruby     ruby                [.] invoke_block_from_c_bh
     0.69%  ruby     libc.so.6           [.] __memmove_avx_unaligned_erms
     0.66%  ruby     libyaml-0.so.2.0.6  [.] 0x000000000000f386
     0.65%  ruby     ruby                [.] rb_gc_writebarrier
     0.57%  ruby     libyaml-0.so.2.0.6  [.] 0x0000000000007517
     0.56%  ruby     ruby                [.] rb_yield
     0.53%  ruby     ruby                [.] mbc_enc_len
     0.50%  ruby     ruby                [.] rb_reg_match_p
     0.48%  ruby     ruby                [.] rb_enc_associate_index
     0.46%  ruby     ruby                [.] search_nonascii
     0.45%  ruby     ruby                [.] rb_ary_push
     0.45%  ruby     ruby                [.] rb_wb_protected_newobj_of
     0.44%  ruby     ruby                [.] CALLER_SETUP_ARG
     0.43%  ruby     ruby                [.] gc_aging
     0.43%  ruby     ruby                [.] rb_st_lookup
     0.40%  ruby     ruby                [.] rb_st_update
     0.39%  ruby     ruby                [.] ary_ensure_room_for_push
     0.39%  ruby     ruby                [.] vm_callee_setup_block_arg
     0.39%  ruby     ruby                [.] rb_enc_get_index
     0.38%  ruby     ruby                [.] rb_class_allocate_instance
     0.37%  ruby     ruby                [.] vm_yield_with_cfunc
     0.37%  ruby     ruby                [.] rb_reg_prepare_re
     0.37%  ruby     ruby                [.] forward_search_range
     0.36%  ruby     ruby                [.] ar_update
     0.36%  ruby     libyaml-0.so.2.0.6  [.] 0x00000000000075e7
     0.35%  ruby     libc.so.6           [.] _int_realloc
     0.35%  ruby     libyaml-0.so.2.0.6  [.] yaml_string_join
     0.34%  ruby     ruby                [.] fstring_cmp
     0.34%  ruby     ruby                [.] onigenc_mbclen
     0.33%  ruby     ruby                [.] rb_str_match_m_p
     0.32%  ruby     ruby                [.] rb_hash_aref
     0.31%  ruby     ruby                [.] must_encindex
     0.31%  ruby     ruby                [.] str_new0.constprop.0
     0.31%  ruby     ruby                [.] each_slice_i
     0.30%  ruby     ruby                [.] rb_gc_obj_slot_size
     0.29%  ruby     ruby                [.] rb_vm_set_ivar_id
     0.29%  ruby     ruby                [.] gc_marks_rest
     0.28%  ruby     libc.so.6           [.] realloc
     0.28%  ruby     ruby                [.] rb_ary_each
     0.27%  ruby     ruby                [.] tbl_update_modify
     0.25%  ruby     ruby                [.] rb_str_hash
     0.24%  ruby     libc.so.6           [.] __memset_avx2_unaligned_erms
     0.24%  ruby     ruby                [.] rb_shape_set_shape_id
     0.22%  ruby     ruby                [.] rb_shape_get_shape
     0.22%  ruby     ruby                [.] coderange_scan
     0.22%  ruby     ruby                [.] gc_grey
     0.22%  ruby     ruby                [.] rb_str_resize
     0.21%  ruby     ruby                [.] vm_push_frame
     0.21%  ruby     libyaml-0.so.2.0.6  [.] yaml_string_extend
     0.20%  ruby     ruby                [.] tbl_update.isra.0
     0.19%  ruby     ruby                [.] rb_check_convert_type_with_id
     0.19%  ruby     libc.so.6           [.] __malloc_usable_size
     0.19%  ruby     ruby                [.] str_uminus
     0.18%  ruby     ruby                [.] rb_vm_frame_block_handler
     0.18%  ruby     libyaml-0.so.2.0.6  [.] 0x00000000000074ca
     0.18%  ruby     ruby                [.] rb_ident_hash
     0.18%  ruby     ruby                [.] onig_search
     0.17%  ruby     libyaml-0.so.2.0.6  [.] 0x00000000000074a0
     0.17%  ruby     libyaml-0.so.2.0.6  [.] 0x00000000000070fd
     0.17%  ruby     ruby                [.] rb_get_symbol_id
     0.17%  ruby     ruby                [.] rb_shape_transition_shape_frozen
     0.16%  ruby     [JIT] tid 49394     [.] 0x000055d56669ad35
     0.16%  ruby     ruby                [.] rb_vm_bh_to_procval
     0.16%  ruby     ruby                [.] rb_obj_call_init_kw
     0.16%  ruby     ruby                [.] rb_obj_freeze_inline
     0.16%  ruby     ruby                [.] rb_hash_default_value
     0.16%  ruby     ruby                [.] enc_set_index
     0.15%  ruby     ruby                [.] count_num_cache_opcodes
     0.15%  ruby     libyaml-0.so.2.0.6  [.] 0x00000000000070d3
     0.15%  ruby     [JIT] tid 49394     [.] 0x000055d56669b2d6

railsbench

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 1M of event 'cycles'
# Event count (approx.): 46924817565
#
# Overhead  Command  Shared Object      Symbol                                                                                                                        
# ........  .......  .................  ................................................................................................................................................................................
#
     3.70%  ruby     ruby               [.] match_at
     2.03%  ruby     ruby               [.] ruby_sip_hash13
     1.84%  ruby     ruby               [.] rb_call0
     1.77%  ruby     libc.so.6          [.] _int_malloc
     1.74%  ruby     ruby               [.] newobj_alloc
     1.66%  ruby     ruby               [.] obj_free
     1.57%  ruby     ruby               [.] gc_sweep_step
     1.57%  ruby     ruby               [.] rb_vm_exec
     1.52%  ruby     ruby               [.] vm_call_iseq_setup
     1.40%  ruby     ruby               [.] find_table_entry_ind
     1.33%  ruby     ruby               [.] rb_funcallv_scope
     1.25%  ruby     ruby               [.] callable_method_entry_or_negative
     1.13%  ruby     ruby               [.] rb_id_table_lookup
     1.07%  ruby     ruby               [.] vm_callee_setup_block_arg
     1.02%  ruby     ruby               [.] rb_shape_get_iv_index
     0.97%  ruby     ruby               [.] rb_any_hash
     0.96%  ruby     sha2.so            [.] rb_Digest_SHA256_Transform
     0.96%  ruby     libc.so.6          [.] malloc
     0.91%  ruby     ruby               [.] rb_wb_protected_newobj_of
     0.85%  ruby     ruby               [.] rb_gc_writebarrier
     0.84%  ruby     ruby               [.] onig_search_gpos
     0.77%  ruby     ruby               [.] vm_call0_body
     0.76%  ruby     ruby               [.] rb_hash_aref
     0.71%  ruby     ruby               [.] find_table_bin_ind
     0.68%  ruby     ruby               [.] setup_parameters_complex
     0.68%  ruby     ruby               [.] rb_st_lookup
     0.66%  ruby     ruby               [.] rb_st_update
     0.65%  ruby     ruby               [.] ar_update
     0.65%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     0.62%  ruby     ruby               [.] vm_exec_core
     0.60%  ruby     libc.so.6          [.] _int_free
     0.60%  ruby     ruby               [.] gc_mark_ptr
     0.58%  ruby     libc.so.6          [.] __malloc_usable_size
     0.56%  ruby     ruby               [.] rb_ivar_get
     0.54%  ruby     ruby               [.] rb_obj_class
     0.47%  ruby     ruby               [.] vm_push_frame
     0.46%  ruby     ruby               [.] tbl_update_modify
     0.46%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.45%  ruby     ruby               [.] rb_yield_values2
     0.43%  ruby     libc.so.6          [.] malloc_consolidate
     0.43%  ruby     ruby               [.] str_buf_cat4.part.0
     0.43%  ruby     ruby               [.] invoke_block_from_c_bh
     0.43%  ruby     ruby               [.] hash_foreach_call
     0.42%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     0.42%  ruby     libc.so.6          [.] unlink_chunk.constprop.0
     0.41%  ruby     ruby               [.] rb_ary_entry
     0.40%  ruby     ruby               [.] rb_obj_is_kind_of
     0.37%  ruby     ruby               [.] vm_callee_setup_arg
     0.35%  ruby     ruby               [.] mbc_enc_len
     0.34%  ruby     ruby               [.] rb_str_hash
     0.34%  ruby     ruby               [.] vm_search_super_method
     0.34%  ruby     ruby               [.] vm_call0_cc
     0.33%  ruby     libcrypto.so.3     [.] 0x00000000001ac2d9
     0.33%  ruby     ruby               [.] class_get_alloc_func
     0.33%  ruby     ruby               [.] ary_memcpy0
     0.32%  ruby     libc.so.6          [.] __strcmp_avx2
     0.31%  ruby     ruby               [.] rb_iseq_mark_and_move
     0.31%  ruby     ruby               [.] rb_vm_opt_send_without_block
     0.31%  ruby     ruby               [.] rb_vm_send
     0.30%  ruby     ruby               [.] exec_recursive
     0.30%  ruby     ruby               [.] search_nonascii
     0.30%  ruby     ruby               [.] tbl_update.isra.0
     0.29%  ruby     ruby               [.] opt_equality_by_mid_slowpath
     0.27%  ruby     ruby               [.] CALLER_SETUP_ARG
     0.27%  ruby     libcrypto.so.3     [.] OPENSSL_LH_doall_arg
     0.26%  ruby     ruby               [.] objspace_xmalloc0
     0.26%  ruby     ruby               [.] rb_enc_set_index
     0.25%  ruby     ruby               [.] rb_str_concat_literals
     0.25%  ruby     ruby               [.] rb_hash_aset
     0.25%  ruby     generator.so       [.] generate_json_string.constprop.0
     0.23%  ruby     ruby               [.] rb_yield
     0.23%  ruby     ruby               [.] rb_hash_default_value
     0.23%  ruby     ruby               [.] gc_mark_children
     0.23%  ruby     ruby               [.] rb_ident_hash
     0.23%  ruby     ruby               [.] rb_ensure
     0.22%  ruby     ruby               [.] rb_copy_wb_protected_attribute
     0.22%  ruby     ruby               [.] vm_invoke_proc
     0.22%  ruby     ruby               [.] rb_check_convert_type_with_id
     0.22%  ruby     ruby               [.] rb_vm_frame_block_handler
     0.22%  ruby     [JIT] tid 49640    [.] 0x00005590a8baf001
     0.22%  ruby     ruby               [.] vm_exec_handle_exception
     0.22%  ruby     ruby               [.] rb_vm_getclassvariable
     0.21%  ruby     ruby               [.] rb_reg_prepare_re
     0.21%  ruby     ruby               [.] rb_get_alloc_func
     0.21%  ruby     ruby               [.] str_replace_shared_without_enc.isra.0
     0.21%  ruby     ruby               [.] rb_check_id
     0.21%  ruby     ruby               [.] rb_block_given_p
     0.20%  ruby     ruby               [.] rb_hash_fetch_m
     0.20%  ruby     ruby               [.] hash_aset_str_insert
     0.20%  ruby     ruby               [.] ar_equal
     0.20%  ruby     ruby               [.] ruby_sized_xfree.constprop.0
     0.19%  ruby     ruby               [.] rb_str_free
     0.19%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.19%  ruby     ruby               [.] rb_hash_update_i
     0.19%  ruby     ruby               [.] rb_str_buf_append
     0.19%  ruby     ruby               [.] coderange_scan
     0.19%  ruby     ruby               [.] forward_search_range
     0.19%  ruby     ruby               [.] rb_vm_invokesuper
     0.19%  ruby     ruby               [.] rb_st_delete
     0.18%  ruby     libc.so.6          [.] __memcmp_avx2_movbe

ruby-lsp

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 31K of event 'cycles'
# Event count (approx.): 1168984848
#
# Overhead  Command  Shared Object      Symbol                                                                                                                        
# ........  .......  .................  ...............................................................................................................................................................................................
#
     3.49%  ruby     ruby               [.] vm_exec_core
     3.36%  ruby     ruby               [.] rb_vm_search_method_slowpath
     3.03%  ruby     ruby               [.] rb_id_table_lookup
     2.71%  ruby     ruby               [.] _ZN4yjit7backend6x86_6446_$LT$impl$u20$yjit..backend..ir..Assembler$GT$17compile_with_regs17h9d0ed6bea04deeb6E.llvm.11276936996120921294
     2.36%  ruby     ruby               [.] rb_vm_exec
     2.15%  ruby     ruby               [.] rb_call0
     1.97%  ruby     ruby               [.] rb_vm_opt_send_without_block
     1.68%  ruby     ruby               [.] vm_call_iseq_setup
     1.50%  ruby     ruby               [.] invoke_block_from_c_bh
     1.47%  ruby     ruby               [.] _ZN4yjit7backend2ir9Assembler9push_insn17ha5c623aa1cbe6f54E.llvm.11276936996120921294
     1.39%  ruby     ruby               [.] rb_shape_get_iv_index
     1.34%  ruby     libc.so.6          [.] _int_malloc
     1.26%  ruby     ruby               [.] rb_gc_writebarrier
     1.25%  ruby     ruby               [.] newobj_alloc
     1.24%  ruby     ruby               [.] gc_sweep_step
     1.23%  ruby     ruby               [.] callable_method_entry_or_negative
     1.23%  ruby     ruby               [.] obj_free
     1.09%  ruby     ruby               [.] match_at
     1.01%  ruby     ruby               [.] find_table_entry_ind
     0.94%  ruby     ruby               [.] rb_funcallv_scope
     0.88%  ruby     ruby               [.] vm_call0_body
     0.77%  ruby     ruby               [.] rb_yield
     0.76%  ruby     ruby               [.] vm_callee_setup_block_arg
     0.73%  ruby     ruby               [.] vm_call_cfunc_with_frame
     0.66%  ruby     ruby               [.] vm_push_frame
     0.66%  ruby     ruby               [.] rb_ary_entry
     0.57%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     0.57%  ruby     ruby               [.] rb_yarv_ary_entry_internal
     0.55%  ruby     ruby               [.] ruby_sip_hash13
     0.55%  ruby     ruby               [.] rb_hash_aref
     0.54%  ruby     libc.so.6          [.] malloc
     0.52%  ruby     libc.so.6          [.] _int_free
     0.51%  ruby     ruby               [.] vm_call_ivar
     0.51%  ruby     [kernel.kallsyms]  [k] memset_erms
     0.50%  ruby     ruby               [.] vm_call_iseq_setup_normal_0start_0params_0locals
     0.49%  ruby     ruby               [.] rb_st_lookup
     0.46%  ruby     ruby               [.] rb_wb_protected_newobj_of
     0.45%  ruby     ruby               [.] _ZN4yjit10virtualmem22VirtualMemory$LT$A$GT$10write_byte17hbd3921d9ed333aafE
     0.42%  ruby     ruby               [.] gc_mark_ptr
     0.42%  ruby     ruby               [.] CALLER_SETUP_ARG
     0.40%  ruby     ruby               [.] setup_parameters_complex
     0.37%  ruby     ruby               [.] vm_call0_cc
     0.37%  ruby     ruby               [.] rb_ec_stack_check
     0.36%  ruby     ruby               [.] rb_equal_opt
     0.36%  ruby     ruby               [.] rb_ary_each
     0.35%  ruby     ruby               [.] rb_ivar_get
     0.33%  ruby     ripper.so          [.] ripper_yyparse
     0.32%  ruby     ruby               [.] optimize_node_left
     0.31%  ruby     ruby               [.] rb_any_hash
     0.31%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     0.31%  ruby     [JIT] tid 49796    [.] 0x000055788e1e1714
     0.30%  ruby     ruby               [.] _ZN4yjit3asm9CodeBlock10write_byte17hb48c5f407c82a287E
     0.29%  ruby     libc.so.6          [.] unlink_chunk.constprop.0
     0.28%  ruby     ruby               [.] vm_callee_setup_arg
     0.26%  ruby     ruby               [.] opt_equality_by_mid_slowpath
     0.26%  ruby     ruby               [.] vm_call_iseq_bmethod
     0.26%  ruby     ruby               [.] ary_memcpy0
     0.25%  ruby     ruby               [.] _ZN4yjit3asm9CodeBlock15get_label_state17h4b31be58724567d3E
     0.24%  ruby     ruby               [.] rb_st_update
     0.24%  ruby     ruby               [.] exec_recursive
     0.24%  ruby     [kernel.kallsyms]  [k] mtree_range_walk
     0.24%  ruby     ruby               [.] vm_call_iseq_setup_normal_0start_1params_1locals
     0.23%  ruby     ruby               [.] tbl_update.isra.0
     0.22%  ruby     ruby               [.] rb_ary_includes
     0.22%  ruby     ruby               [.] rb_vm_send
     0.22%  ruby     ruby               [.] gc_mark_children
     0.21%  ruby     ruby               [.] onig_search_gpos
     0.21%  ruby     ruby               [.] rb_hash_aset
     0.21%  ruby     ruby               [.] _ZN4yjit7backend6x86_64107_$LT$impl$u20$core..convert..From$LT$yjit..backend..ir..Opnd$GT$$u20$for$u20$yjit..asm..x86_64..X86Opnd$GT$4from17h6158d3b41034b64bE
     0.21%  ruby     [kernel.kallsyms]  [k] kmem_cache_alloc
     0.21%  ruby     libc.so.6          [.] __memcmp_avx2_movbe
     0.21%  ruby     ruby               [.] rb_obj_class
     0.20%  ruby     [kernel.kallsyms]  [k] kmem_cache_free
     0.20%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.19%  ruby     ruby               [.] rb_equal
     0.19%  ruby     ruby               [.] tbl_update_modify
     0.19%  ruby     ruby               [.] vm_call_symbol
     0.19%  ruby     ruby               [.] gccct_method_search_slowpath
     0.19%  ruby     ruby               [.] ar_update
     0.19%  ruby     [kernel.kallsyms]  [k] __kmem_cache_alloc_bulk
     0.18%  ruby     [kernel.kallsyms]  [k] build_detached_freelist
     0.18%  ruby     [kernel.kallsyms]  [k] memcg_slab_post_alloc_hook
     0.17%  ruby     [kernel.kallsyms]  [k] perf_iterate_ctx
     0.17%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.17%  ruby     ruby               [.] args_setup_kw_parameters
     0.17%  ruby     [kernel.kallsyms]  [k] __vma_adjust
     0.16%  ruby     ruby               [.] rb_obj_is_kind_of
     0.16%  ruby     ruby               [.] rb_obj_freeze_inline
     0.16%  ruby     ruby               [.] hash_foreach_call
     0.16%  ruby     ruby               [.] rb_ident_hash
     0.16%  ruby     ruby               [.] rb_ec_ary_new_from_values
     0.15%  ruby     [kernel.kallsyms]  [k] __perf_addr_filters_adjust
     0.15%  ruby     ruby               [.] _ZN4yjit3asm6x86_648write_rm17h4a99dab360900385E.llvm.799876589996677028
     0.15%  ruby     ruby               [.] rb_yield_values2
     0.15%  ruby     ruby               [.] find_table_bin_ind
     0.15%  ruby     [JIT] tid 49796    [.] 0x000055788e1225fe
     0.14%  ruby     libc.so.6          [.] malloc_consolidate
     0.14%  ruby     ruby               [.] _ZN4yjit7codegen16gen_single_block17h0288d5996cde3a9fE
     0.14%  ruby     ruby               [.] rb_ary_push
     0.14%  ruby     [kernel.kallsyms]  [k] page_counter_try_charge

sequel

# To display the perf.data header info, please use --header/--header-only options.
#
#
# Total Lost Samples: 0
#
# Samples: 14K of event 'cycles'
# Event count (approx.): 535511683
#
# Overhead  Command  Shared Object      Symbol
# ........  .......  .................  .............................................
#
     9.38%  ruby     ruby               [.] match_at
     2.30%  ruby     ruby               [.] obj_free
     2.26%  ruby     ruby               [.] gc_sweep_step
     1.87%  ruby     ruby               [.] newobj_alloc
     1.80%  ruby     ruby               [.] rb_funcallv_scope
     1.69%  ruby     libc.so.6          [.] _int_malloc
     1.62%  ruby     sqlite3_native.so  [.] sqlite3Parser
     1.47%  ruby     ruby               [.] find_table_entry_ind
     1.30%  ruby     ruby               [.] vm_exec_handle_exception
     1.25%  ruby     libc.so.6          [.] malloc
     1.21%  ruby     ruby               [.] BSD_vfprintf.constprop.0
     1.19%  ruby     libc.so.6          [.] __memmove_avx_unaligned_erms
     1.16%  ruby     ruby               [.] onig_search_gpos
     1.11%  ruby     ruby               [.] rb_vm_exec
     1.07%  ruby     ruby               [.] rb_wb_protected_newobj_of
     1.01%  ruby     libc.so.6          [.] __strlen_avx2
     0.94%  ruby     libc.so.6          [.] __malloc_usable_size
     0.91%  ruby     sqlite3_native.so  [.] resolveExprStep
     0.89%  ruby     ruby               [.] rb_shape_get_iv_index
     0.86%  ruby     ruby               [.] invoke_block_from_c_bh
     0.86%  ruby     sqlite3_native.so  [.] sqlite3VdbeExec
     0.83%  ruby     ruby               [.] vm_callee_setup_block_arg
     0.72%  ruby     libc.so.6          [.] __offtime
     0.72%  ruby     ruby               [.] rb_gc_obj_slot_size
     0.71%  ruby     ruby               [.] rb_call0
     0.67%  ruby     libc.so.6          [.] cfree@GLIBC_2.2.5
     0.63%  ruby     ruby               [.] str_new0.constprop.0
     0.61%  ruby     libc.so.6          [.] _int_free
     0.61%  ruby     ruby               [.] ruby_sip_hash13
     0.57%  ruby     ruby               [.] rb_id_table_lookup
     0.57%  ruby     libc.so.6          [.] msort_with_tmp.part.0
     0.55%  ruby     ruby               [.] rb_gc_writebarrier
     0.53%  ruby     libc.so.6          [.] __memcmp_avx2_movbe
     0.53%  ruby     ruby               [.] callable_method_entry_or_negative
     0.53%  ruby     ruby               [.] forward_search_range
     0.52%  ruby     sqlite3_native.so  [.] sqlite3DbMallocRawNN
     0.51%  ruby     ruby               [.] rb_strftime_with_timespec
     0.51%  ruby     ruby               [.] vm_call0_body
     0.48%  ruby     ruby               [.] rb_yield
     0.47%  ruby     ruby               [.] rb_str_hash_cmp
     0.46%  ruby     date_core.so       [.] date__parse
     0.46%  ruby     sqlite3_native.so  [.] sqlite3WhereBegin
     0.44%  ruby     ruby               [.] rb_rational_new
     0.43%  ruby     sqlite3_native.so  [.] sqlite3BtreeTableMoveto
     0.42%  ruby     ruby               [.] coderange_scan
     0.41%  ruby     ruby               [.] ar_update
     0.41%  ruby     ruby               [.] rb_obj_class
     0.41%  ruby     ruby               [.] rb_hash_aref
     0.41%  ruby     ruby               [.] rb_st_lookup
     0.40%  ruby     ruby               [.] rb_enc_set_index
     0.40%  ruby     libc.so.6          [.] __tzfile_compute
     0.40%  ruby     ruby               [.] vm_call_iseq_setup
     0.39%  ruby     date_core.so       [.] s3e
     0.39%  ruby     ruby               [.] rb_enc_get_index
     0.39%  ruby     ruby               [.] rb_ivar_get
     0.39%  ruby     ruby               [.] find_time_t
     0.39%  ruby     ruby               [.] vm_push_frame
     0.38%  ruby     date_core.so       [.] check_class
     0.36%  ruby     ruby               [.] rb_obj_freeze_inline
     0.36%  ruby     ruby               [.] update_char_offset
     0.36%  ruby     ruby               [.] rb_reg_search_set_match
     0.36%  ruby     ruby               [.] tbl_update_modify
     0.36%  ruby     ruby               [.] onigenc_single_byte_ascii_only_case_map
     0.35%  ruby     sqlite3_native.so  [.] selectExpander
     0.34%  ruby     ruby               [.] rb_shape_transition_shape_frozen
     0.34%  ruby     ruby               [.] rb_str_free
     0.33%  ruby     ruby               [.] find_table_bin_ind
     0.32%  ruby     ruby               [.] rb_rational_mul
     0.32%  ruby     ruby               [.] rb_int_parse_cstr
     0.32%  ruby     sqlite3_native.so  [.] pcache1Fetch
     0.30%  ruby     ruby               [.] rb_str_set_len
     0.30%  ruby     libc.so.6          [.] pthread_mutex_lock@@GLIBC_2.2.5
     0.29%  ruby     ruby               [.] rb_str_downcase
     0.29%  ruby     ruby               [.] rb_enc_strlen
     0.29%  ruby     ruby               [.] rb_st_update
     0.29%  ruby     ruby               [.] search_nonascii
     0.28%  ruby     sqlite3_native.so  [.] walkExpr
     0.28%  ruby     ruby               [.] rb_hash_stlike_delete
     0.27%  ruby     ruby               [.] lep_svar_set
     0.27%  ruby     sqlite3_native.so  [.] sqlite3DbNNFreeNN
     0.27%  ruby     ruby               [.] rb_enc_str_coderange
     0.27%  ruby     ruby               [.] str_buf_cat4.part.0
     0.26%  ruby     sqlite3_native.so  [.] columnMem
     0.25%  ruby     ruby               [.] rb_reg_prepare_re
     0.25%  ruby     ruby               [.] hook_before_rewind
     0.25%  ruby     ruby               [.] rb_enc_associate_index
     0.25%  ruby     ruby               [.] ruby_scan_digits
     0.25%  ruby     libc.so.6          [.] pthread_mutex_unlock@@GLIBC_2.2.5
     0.24%  ruby     libc.so.6          [.] __tz_convert
     0.24%  ruby     ruby               [.] rb_enc_get
     0.24%  ruby     ruby               [.] rb_backref_set
     0.23%  ruby     ruby               [.] rb_str_resize
     0.23%  ruby     ruby               [.] objspace_xmalloc0
     0.23%  ruby     ruby               [.] vm_call0_cc
     0.22%  ruby     ruby               [.] str_subseq
     0.22%  ruby     ruby               [.] ruby_sized_xfree.constprop.0
     0.22%  ruby     ruby               [.] rb_str_hash
     0.22%  ruby     sqlite3_native.so  [.] sqlite3WhereEnd
     0.21%  ruby     sqlite3_native.so  [.] sqlite3VdbeHalt
     0.21%  ruby     sqlite3_native.so  [.] sqlite3VdbeMemSetStr

@k0kubun
Copy link
Member Author

k0kubun commented Oct 5, 2023

Also curious to know what the profile looks like for fib and 30k_methods since these microbenchmarks presumably would have 100% in JIT time and much higher percentage taken by push frame.

Here's the result. I'm glad "JITed cycles" is almost 100% for them, which supports its accuracy.

fib

total cycles: 10491376957
JITed cycles: 10485596647 (99.9%)
[unknown]                  86.3% 9045015547
[JIT] ISEQ gen_push_frame  13.7% 1440581100

30k_methods

total cycles: 18605773416
JITed cycles: 18546951229 (99.7%)
[unknown]                  87.2% 16178703056
[JIT] ISEQ gen_push_frame  12.8% 2368248173

@k0kubun
Copy link
Member Author

k0kubun commented Oct 5, 2023

Another relevant data:

cfunc_itself

total cycles: 2927939913
JITed cycles: 1450662096 (49.5%)
[unknown]                  53.3% 772678190
[JIT] C gen_push_frame     44.9% 651710713
[JIT] ISEQ gen_push_frame   1.8% 26273193

@maximecb
Copy link

maximecb commented Oct 5, 2023

Thanks for taking the time to do this. I agree it's good to see that JITted cycles is at 99% on the microbenchmarks. Validates that the computation is working as expected.

It looks like there is a long tail of C functions for every benchmark, though there are definitely a few low hanging fruits in there still.

[JIT] ISEQ gen_push_frame  13.7% 1440581100

The overhead is maybe less than I would have thought? This does seem to indicate that we'll need to do more to speed up function calls... Or that we should be more aggressive in our pursuit of inlining next year.

@k0kubun
Copy link
Member Author

k0kubun commented Oct 5, 2023

The overhead is maybe less than I would have thought?

I have another revision that profiles each insn instead, which I'm going to file a separate issue for. Here's the per-insn profiling result for the same benchmark:

fib

total cycles: 10508365328
JITed cycles: 10502027160 (99.9%)
[JIT] opt_send_without_block  23.3% 2446865705
[JIT] opt_plus                20.8% 2186328527
[JIT] putobject               19.4% 2036462554
[JIT] opt_lt                   9.6% 1007141791
[JIT] leave                    8.5% 893655104
[JIT] getlocal_WC_0            6.2% 651430565
[JIT] opt_minus                5.5% 573019914
[JIT] branchunless             5.4% 567186279
[JIT] putobject_INT2FIX_1_     0.9% 91712833
[JIT] putself                  0.5% 48223888

It spends a fair amount of time in opt_plus, which is fine. Not sure why putobject takes a similar amount of time though.

@maximecb
Copy link

maximecb commented Oct 5, 2023

Hmmmm that seems a bit weird to me. The code we generate for opt_plus is a lot smaller than what we generate for opt_send_without_block AFAIK ?

@k0kubun
Copy link
Member Author

k0kubun commented Oct 5, 2023

I would expect a bit more difference between those instructions too, but it's not a super short code either. Because it takes a couple of return values, it needs a guard for both operands.

  # Insn: 0028 opt_plus (stack_size: 2)
  # guard arg0 fixnum
  0x55a87618122f: test byte ptr [rbx - 8], 1
  0x55a876181233: je 0x55a87618333e
  # guard arg1 fixnum
  0x55a876181239: test byte ptr [rbx], 1
  0x55a87618123c: je 0x55a87618335c
  0x55a876181242: mov rax, qword ptr [rbx - 8]
  0x55a876181246: sub rax, 1
  0x55a87618124a: add rax, qword ptr [rbx]
  0x55a87618124d: jo 0x55a87618331d
  # reg_temps: 00000000 -> 00000001
  0x55a876181253: mov rsi, rax

@k0kubun
Copy link
Member Author

k0kubun commented Oct 5, 2023

I have another revision that profiles each insn instead, which I'm going to file a separate issue for.

Filed: #541

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants