Bagaimana untuk Mengoptimumkan Popcount Kedudukan 8-bit ini menggunakan Assembly?
Pelaksanaan __mm_add_epi32_inplace_purego dalam Go adalah suboptimum disebabkan oleh lulus yang mahal daripada [8]int32 tatasusunan. Untuk meningkatkan prestasi, adalah disyorkan untuk menghantar penuding kepada tatasusunan sebaliknya.
Walau bagaimanapun, persoalannya melangkaui mengoptimumkan fungsi khusus ini dan meneroka pengoptimuman gelung dalam menggunakan pemasangan untuk algoritma kiraan populasi kedudukan pada bait .
Pengoptimuman Perhimpunan
Kod pemasangan yang disediakan menawarkan dua варианты algoritma kiraan populasi kedudukan:
Penambahbaikan Diperkenalkan
Kod pemasangan menggunakan pelbagai teknik untuk menambah baik prestasi:
Tanda Aras Prestasi
Tanda aras menunjukkan bahawa pengoptimuman pemasangan menghasilkan peningkatan prestasi yang ketara berbanding dengan pelaksanaan rujukan naif dalam Go tulen :
Kod Sumber Penuh
Kod sumber lengkap untuk kedua-dua varian pemasangan boleh didapati di GitHub. Kod ini juga termasuk perpustakaan mudah alih yang boleh digunakan untuk kedua-dua varian dalam mana-mana program Go.
Kesimpulan
Dengan melaksanakan algoritma kiraan populasi kedudukan dalam pemasangan, prestasi yang ketara keuntungan boleh dicapai. Kod pemasangan yang disediakan menggunakan pelbagai pengoptimuman untuk memaksimumkan daya pemprosesan. Untuk butiran dan contoh lanjut, sila rujuk repositori GitHub.
Atas ialah kandungan terperinci Bagaimanakah Pengoptimuman Pemasangan boleh Meningkatkan Prestasi Algoritma Popcount Kedudukan pada Bait?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!