A一組提議的補丁承諾使 Linux 內核的 memchr() 實現更快地在內存塊中定位字符。在開發人員進行的測試中,新的實現在大型搜索上可以快四倍。
本週日為 Linux 內核發布的最新 memchr() 補丁旨在加速這個函數,對於長字符串,該函數的速度可以提高約 4 倍。發出補丁的 Yu-Jen Chang 解釋說:
memchr() 的原始版本是用字節比較技術實現的,它沒有完全使用 64 位或 32 位CPU 中的寄存器。我們使用全字比較,以便在 CPU 上同時比較 8 個字符。此代碼基於 David Laight 的實現。
我們創建了兩個文件來衡量性能。第一個文件在目標字符前面平均包含 10 個字符。第二個文件在目標字符前面至少包含 1000 個字符。我們的“memchr()”實現在第一次測試中稍好,在第二次測試中比原來的實現快了近 4 倍。
這對於微基準測試 memchr() 可能很好但在宏偉的計劃中可能不會等同於最終用戶的任何物質利益,特別是因為最大的性能提升將是非常長的字符串。今天檢查 Linux 內核源代碼樹,大約有 129 次 memchr() (或大約 323 次對於 memchr 的不同變體)被使用,範圍從僅 Linux 內核工具到文件系統代碼和各種驅動程序中使用。
感興趣的補丁可以在 Linux 內核郵件列表 供審查。