String interning

Софтуерна техника, при която повтарящи се стрингове, които не се променят и са еднакви, например конфиг стрингове, не се съхраняват независимо един от друг, а се съхранява само един, и на всички места, където се използва, го достъпваме с указател.

Така се получава хеш структура, наречена string intern pool.

Освен че се пести памет, string interning също и ускорява сравняването на стрингове, защото вместо да се сравняват символ по символ, просто се сравняват дали указателите им са еднакви (a pointer equality test).

В PHP string interning e реализирано от OPcache библиотеката като имаме настройки като „opcache.interned_string_buffer„.

opcache.interned_strings_buffer – A pretty neat setting with like 0 documentation. PHP uses a technique called string interning to improve performance— so, for example, if you have the string „foobar“ 1000 times in your code, internally PHP will store 1 immutable variable for this string and just use a pointer to it for the other 999 times you use it. Cool. This setting takes it to the next level— instead of having a pool of these immutable string for each SINGLE php-fpm process, this setting shares it across ALL of your php-fpm processes. It saves memory and improves performance, especially in big applications. The value is set in megabytes, so set it to „16“ for 16MB. The default is low, 4MB.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *