如何使用 Assembly 最佳化這個 8 位元位置 Popcount?
Go 中提供的 __mm_add_epi32_inplace_purego 實現由於昂貴的傳遞而不是最佳的[8]int32 數組。為了提高效能,建議改為傳遞指向數組的指標。
但是,問題超出了最佳化此特定函數的範圍,而是探索使用彙編對位元組上的位置總體計數演算法進行內部循環的最佳化.
彙編最佳化
提供的彙編程式碼提供了兩種位置填充計數演算法:
引入的改進
彙編程式碼利用各種技術來改進效能:
性能基準
基準表明,與純Go 中的簡單參考實現相比,彙編優化帶來了顯著的性能改進:
完整原始碼
兩個彙編變體的完整原始碼可以在GitHub 上找到。該程式碼還包括一個可移植庫,可用於任何 Go 程式中的這兩種變體。結論
透過在彙編中實現位置總體計數演算法,顯著提高了性能可以獲得收益。提供的彙編程式碼利用各種最佳化來最大化吞吐量。有關更多詳細資訊和範例,請參閱 GitHub 儲存庫。以上是彙編優化如何提高位置 Popcount 演算法的位元組效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!