Предложена е реализация на функцията memchr за ядрото на Linux, която работи до 4 пъти по-бързо

Набор от пачове с оптимизирана реализация на функцията memchr(), използвана за търсене на символ в масив, е предложен за включване в ядрото на Linux. За разлика от старата версия, която използва сравнение байт по байт, предложената реализация е изградена, като се вземе предвид пълното използване на 64- и 32-битови CPU регистри. Вместо байтове, сравнението се извършва с помощта на машинни думи, което позволява да се сравняват поне 4 байта наведнъж.

При търсене в големи низове новата опция се оказа около 4 пъти по-бърза от старата (например за низове от 1000 знака). За малки низове ефективността на новата реализация не е толкова значителна, но все пак е по-висока в сравнение с оригиналната версия. В ядрото на Linux размерът на низовете, обработвани в memchr(), достига 512 байта. Повишаването на производителността за низове от 512 байта, в ситуация, в която търсеният знак е в края на низа, е 20%.

Тестването на ядрото 5.18 с новата опция "memchr()" за 32-битови и 64-битови архитектури не разкри никакви проблеми. Общото увеличение на производителността на подсистемите на ядрото при използване на оптимизираната версия на „memchr()“ все още не е оценено, нито е анализирана осъществимостта на замяната на внедряването (в кода на ядрото извикванията на функцията memchr() се появяват 129 пъти , включително в кода на драйверите и файловите системи).

Източник: opennet.ru

Добавяне на нов коментар