Используются ли общие реализации 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 должна проверить свой код...