Arm Developer Provides More Glibc Optimizations - Memem & Strstr
Arm's Wilco Dijkstra landed some more optimizations this past week in the Glibc development code for the upcoming GNU C Library 2.30 release.
Memmem is now faster on AArch64 by up to 6.6x times thanks to implementing a modified Horspool algorithm.
Similarly, the related strstr function also now should see improved performance thanks to its Horspool implementation. For strstr on AArch64, the performance is up to 5.8x faster for the basic_strstr and 3.7x for twoway_strstr.
At this code is a new algorithm implementation in Glibc's common code as opposed to architecture/instruction optimizations in the CPU-specific code, it's possible we may see nice performance benefits on other processors too for memmem/strstr, but the Arm developer obviously only provided numbers for their Cortex processors.
Other work that has been happening for Glibc 2.30 include Unicode 12.1 support, the linker now supports a --preload option for preloading shared objects as an alternative to the environment variable, new getdents64/gettid/tgkill functions, security improvements, and other updates.
Glibc 2.30 is expected for release around the start of August and thus should be able to make it in most autumn Linux distribution updates.
Memmem is now faster on AArch64 by up to 6.6x times thanks to implementing a modified Horspool algorithm.
Similarly, the related strstr function also now should see improved performance thanks to its Horspool implementation. For strstr on AArch64, the performance is up to 5.8x faster for the basic_strstr and 3.7x for twoway_strstr.
At this code is a new algorithm implementation in Glibc's common code as opposed to architecture/instruction optimizations in the CPU-specific code, it's possible we may see nice performance benefits on other processors too for memmem/strstr, but the Arm developer obviously only provided numbers for their Cortex processors.
Other work that has been happening for Glibc 2.30 include Unicode 12.1 support, the linker now supports a --preload option for preloading shared objects as an alternative to the environment variable, new getdents64/gettid/tgkill functions, security improvements, and other updates.
Glibc 2.30 is expected for release around the start of August and thus should be able to make it in most autumn Linux distribution updates.
8 Comments