Entsperren der Ruby-Ractor-Leistung: Beseitigung der Konkurrenz um Klassenvariable
2025-05-28
Dieser Beitrag befasst sich mit einem Performance-Engpass in Rubys Ractoren bei der Behandlung von Klasseninstanzvariablen. Das globale Interpreter-Lock führt zu einer signifikanten Performance-Verschlechterung, wenn mehrere Ractoren gleichzeitig auf diese Variablen zugreifen. Der Autor analysiert die zugrunde liegende Implementierung von Klasseninstanzvariablen sorgfältig und schlägt eine Lösung mit Objektdelegation vor, um die Lock-Konkurrenz zu beseitigen, was zu einer fast dreifachen Performance-Verbesserung in Microbenchmarks führt. Diese Lösung behebt auch unerwartet einen Fehler und eine Performance-Regression, die durch das neue Namespace-Feature eingeführt wurden.
Entwicklung