已為 Linux 核心提出了 memchr 函數的實現,運行速度提高了 4 倍

一組具有 memchr() 函數最佳化實作的補丁,用於搜尋數組中的符號,已建議包含在 Linux 核心中。與使用逐字節比較的舊版本不同,建議的實作是考慮到充分利用 64 位元和 32 位元 CPU 暫存器而建構的。比較是使用機器字而不是位元組來執行的,這允許一次至少比較 4 個位元組。

在大型字串中搜尋時,新選項的速度比舊選項快約 4 倍(例如,對於 1000 個字元的字串)。對於小字串,新實現的效率不是那麼顯著,但與原始版本相比仍然更高。在Linux核心中,memchr()處理的字串大小達到512位元組。在搜尋字元位於字串末尾的情況下,512 位元組字串的效能增益為 20%。

使用針對 5.18 位元和 32 位元體系結構的新「memchr()」選項測試 64 內核,沒有發現任何問題。尚未評估使用「memchr()」最佳化版本時核心子系統的整體效能增益,也沒有分析替換實現的可行性(在核心程式碼中,對 memchr() 函數的呼叫發生了 129 次,包括在驅動程式和文件系統的代碼中)。

來源: opennet.ru

添加評論