Используются ли общие реализации JavaScript для интернирования строк?
Использовать общие JavaScript-движки, такие как V8 и WebKit JavaScriptCore, использовать string interning для строк JavaScript? Или они фактически хранят несколько экземпляров одинаковых строк в памяти?
Ответы
Ответ 1
Да. В общем, любая буквальная строка, идентификатор или другая константная строка в источнике JS интернирована. Однако детали реализации (именно то, что интернировано, например) различаются, а также когда происходит интернирование.
Обратите внимание, что строковое значение не совпадает с строковым объектом, хотя объекты String не интернированы, потому что это будет принципиально неправильное поведение.
Ответ 2
http://jsperf.com/strinterning
Да, в Chrome, нет в Aurora 15 и FF 13!
Сравнение двух строк на 85% медленнее, чем сравнение двух указателей в Firefox.
Однако такая же скорость в Chrome, что свидетельствует о сравнении двух указателей.
Возможно, команда JS Engine в Mozilla должна проверить свой код...