За Линук кернел је предложена имплементација функције мемцхр, која ради до 4 пута брже

Предложен је скуп закрпа са оптимизованом имплементацијом функције мемцхр() за тражење симбола у низу за укључивање у Линук кернел. За разлику од старе верзије, која је користила поређење бајт по бајт, предложена имплементација је изграђена узимајући у обзир пуну употребу 64- и 32-битних ЦПУ регистара. Уместо бајтова, поређење се врши помоћу машинских речи, што омогућава да се упореде најмање 4 бајта истовремено.

Приликом претраживања у великим стринговима, нова опција је била око 4 пута бржа од старе (на пример, за низове од 1000 карактера). За мале жице, ефикасност нове имплементације није толико значајна, али је ипак већа у поређењу са оригиналном верзијом. У Линук кернелу, величина стрингова обрађених у мемцхр() достиже 512 бајтова. Добитак перформанси за низове од 512 бајтова, у ситуацији када је тражени карактер на крају стринга, износи 20%.

Тестирање кернела 5.18 са новом опцијом „мемцхр()“ за 32-битне и 64-битне архитектуре није открило никакве проблеме. Укупан добитак перформанси подсистема језгра при коришћењу оптимизоване верзије „мемцхр()“ још није процењен, нити је анализирана изводљивост замене имплементације (у коду кернела, позиви функције мемцхр() се јављају 129 пута , укључујући код драјвера и система датотека).

Извор: опеннет.ру

Додај коментар