TGViewer
Defront — про фронтенд-разработку и не только Defront — про фронтенд-разработку и не только @defront · 5.04K subscribers
Post #367 2.24K
В конце октября в код Hermes (JavaScript-движок от Facebook, который используется в React Native на Android) был влит код с оптимизацией конкатенации строк.

Простая реализация конкатенации может привести к квадратичной сложности из-за копирования строк, поэтому в современных движках (например, в v8) для конкатенации строк используется дерево-подобная структура — rope. У этого подхода есть накладные расходы — для одного символа может выделяться один объект. В Hermes используется другой подход. Для конкатенации используется специальный буфер, куда добавляются все строки. Новая оптимизация ускорила pdfjs в три раза.

Если есть возможность можно помочь движку с конкатенацией, переписав код. Кристофер Чедоу пару лет назад написал пост про особенности реализации конкатенации строк — "Efficient String Encoding for Concatenation". Там он предлагает заменить конкатенацию строк join'ом массива строк. Потенциально это может ускорить код, который очень активно работает со строками.

#performance #js #internals

https://blog.vjeux.com/2018/javascript/efficient-string-encoding-for-concatenation.html
https://github.com/facebook/hermes/commit/fc2674b1ed207fb5967f75d1159e5f0b8c46fa8d
GitHub buffered concatenation of string primitives · facebook/hermes@fc2674b Summary: Attempt to address the case where smaller strings are repeatedly appended to a larger string. Example code might look like this: var str = ""; for(let i = 0; i &...
More from @defront
  1. Jan 7, 2024Channel name was changed to «Defront — про фронтенд-разработку и не только»
  2. Feb 24, 2022Про войну в Украине Шлю лучи поддержки братьям и сёстрам украинцам. В моём окружении нет н…
  3. Feb 23, 2022Qwik — возобновляемый JavaScript-фреймворк Райан Карниато поделился своими мыслями после р…
  4. Feb 22, 2022Обработка ошибок с помощью reportError Стэфан Джудис рассказал про малоизвестный метод для…
  5. Feb 21, 2022Выбор библиотеки по её размеру Владимир Клепов рассказал про подводные камни выбора библио…
  6. Feb 10, 2022Time-travel debugging в Svelte Сэм Ван Тассел рассказал про DeLorian — новый инструмент дл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →