Implementasi fungsi memchr telah diusulkan untuk kernel Linux, berjalan hingga 4 kali lebih cepat

Serangkaian patch dengan implementasi fungsi memchr() yang dioptimalkan, digunakan untuk mencari simbol dalam array, telah diusulkan untuk disertakan dalam kernel Linux. Berbeda dengan versi lama, yang menggunakan perbandingan byte demi byte, implementasi yang diusulkan dibangun dengan mempertimbangkan penggunaan penuh register CPU 64 dan 32-bit. Alih-alih byte, perbandingan dilakukan menggunakan kata-kata mesin, yang memungkinkan setidaknya 4 byte dibandingkan sekaligus.

Saat mencari dalam string besar, opsi baru ternyata sekitar 4 kali lebih cepat daripada yang lama (misalnya, untuk string 1000 karakter). Untuk string kecil, efisiensi implementasi baru tidak begitu signifikan, namun masih lebih tinggi dibandingkan versi aslinya. Pada kernel Linux, ukuran string yang diproses di memchr() mencapai 512 byte. Peningkatan kinerja untuk string 512 byte, dalam situasi di mana karakter yang dicari berada di akhir string, adalah 20%.

Menguji kernel 5.18 dengan opsi "memchr()" baru untuk arsitektur 32-bit dan 64-bit tidak menunjukkan masalah apa pun. Peningkatan kinerja keseluruhan subsistem kernel saat menggunakan versi "memchr()" yang dioptimalkan belum dinilai, dan kelayakan penggantian implementasi belum dianalisis (dalam kode kernel, panggilan ke fungsi memchr() terjadi 129 kali , termasuk dalam kode driver dan sistem file).

Sumber: opennet.ru

Tambah komentar