diff options
author | Jeremy Evans <code@jeremyevans.net> | 2023-04-12 12:33:16 -0700 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2023-04-13 20:22:36 -0700 |
commit | 1f115f141dd17f75049a5e17107906c5bcc372e1 (patch) | |
tree | ee97dfc4e85959cf84b8cb2e048e21fcc9e8b784 /vm_core.h | |
parent | 6beb755d810082ea3f557f54c687bc752a11cc7b (diff) | |
download | ruby-1f115f141dd17f75049a5e17107906c5bcc372e1.tar.gz |
Speed up rebuilding the loaded feature index
Rebuilding the loaded feature index slowed down with the bug fix
for #17885 in 79a4484a072e9769b603e7b4fbdb15b1d7eccb15. The
slowdown was extreme if realpath emulation was used, but even when
not emulated, it could be about 10x slower.
This adds loaded_features_realpath_map to rb_vm_struct. This is a
hidden hash mapping loaded feature paths to realpaths. When
rebuilding the loaded feature index, look at this hash to get
cached realpath values, and skip calling rb_check_realpath if a
cached value is found.
Fixes [Bug #19246]
Diffstat (limited to 'vm_core.h')
-rw-r--r-- | vm_core.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -676,6 +676,7 @@ typedef struct rb_vm_struct { VALUE loaded_features; VALUE loaded_features_snapshot; VALUE loaded_features_realpaths; + VALUE loaded_features_realpath_map; struct st_table *loaded_features_index; struct st_table *loading_table; #if EXTSTATIC |