Hello! While profiling a Scheme program, I noticed that ‘string=?’ was surprisingly high. I ran OProfile on this Scheme program: --8<---------------cut here---------------start------------->8--- (define s (make-string 123 #\a)) (let loop () (string= s s) (loop)) --8<---------------cut here---------------end--------------->8--- The flat profile was like this: --8<---------------cut here---------------start------------->8--- samples % symbol name 13683 24.6367 scm_i_string_ref 13447 24.2118 compare_strings 8652 15.5782 scm_i_string_chars 4801 8.6444 vm_debug_engine 4535 8.1654 scm_i_str2symbol 2123 3.8225 scm_ihashq 1338 2.4091 scm_fluid_ref 993 1.7879 scm_i_string_hash 750 1.3504 scm_hash_fn_get_handle 616 1.1091 scm_module_variable 445 0.8012 scm_from_locale_stringn --8<---------------cut here---------------end--------------->8--- I came up with the following patch, which adds a shortcut for the most common case: