It’s quite inelegant, but it leads to a more balanced profile: --8<---------------cut here---------------start------------->8--- samples % symbol name 8079 23.3984 scm_string_eq 5649 16.3606 vm_debug_engine 5624 16.2882 scm_i_str2symbol 2840 8.2252 scm_ihashq 1755 5.0828 scm_i_string_hash 1637 4.7411 scm_fluid_ref 1027 2.9744 scm_i_string_ref 1011 2.9281 scm_hash_fn_get_handle 877 2.5400 scm_i_string_chars 793 2.2967 scm_module_variable 553 1.6016 scm_from_locale_stringn 471 1.3641 scm_from_stringn 426 1.2338 scm_sym2var 384 1.1121 scm_i_make_string 317 0.9181 scm_module_lookup --8<---------------cut here---------------end--------------->8--- ... and a 43% execution time improvement on a tight loop that does ‘string=’. OK to commit? Ideas for a better solution? Thanks, Ludo’.