Für den Linux-Kernel wurde eine Implementierung der Funktion memchr vorgeschlagen, die bis zu 4 Mal schneller arbeitet.

Für die Aufnahme in den Linux-Kernel wurde ein Satz von Patches vorgeschlagen, die eine optimierte Implementierung der Funktion memchr() enthalten. Diese wird verwendet, um ein Zeichen in einem Array zu suchen. Im Gegensatz zur älteren Version, die byteweise Vergleiche anstellte, ist die vorgeschlagene Implementierung so konzipiert, dass sie die vollständige Nutzung von 64- und 32-Bit-CPU-Registern berücksichtigt. Anstelle von Bytes erfolgt der Vergleich mit Maschinenwörtern, was es ermöglicht, mindestens 4 Bytes auf einmal zu vergleichen.

Beim Suchen in großen Strings stellte sich die neue Variante als etwa viermal schneller heraus als die alte (zum Beispiel für Strings mit 1000 Zeichen). Für kleinere Strings ist die Effizienz der neuen Implementierung weniger signifikant, aber immer noch höher im Vergleich zur ursprünglichen Variante. Im Linux-Kernel erreicht die in memchr() verarbeitete String-Größe bis zu 512 Bytes. Der Leistungszuwachs für 512-byte lange Strings, wenn das gesuchte Zeichen am Ende des Strings gefunden wird, beträgt 20 %.

Das Testen des Kernels 5.18 mit der neuen Variante „memchr()“ für 32- und 64-Bit-Architekturen hat keinerlei Probleme aufgezeigt. Der allgemeine Leistungszuwachs der Kernel-Subsysteme bei Verwendung der optimierten Variante von „memchr()“ wurde bisher nicht bewertet, ebenso wenig wurde die Sinnhaftigkeit eines Austauschs der Implementierung analysiert (im Kernel-Code tritt der Funktionsaufruf von memchr() 129 Mal auf, einschließlich im Code von Treibern und Dateisystemen).

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster