Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Memotong Slice Besar dengan Berjuta-juta Rentetan untuk Pemprosesan Selari dengan Cekap?
Menentukan cara mengagihkan sekeping besar secara sekata kepada ketulan yang lebih kecil boleh menjadi tugas biasa apabila bekerja dengan set data yang besar dalam Go. Artikel ini meneroka penyelesaian untuk memotong kepingan dengan lebih 2 juta rentetan, memastikan pengedaran sekata.
Pendekatan asal melibatkan penentuan indeks permulaan dan penamat bagi setiap ketul dan menyalin julat yang ditentukan ke dalam kepingan baharu. Walau bagaimanapun, penyelesaian ini menyebabkan bahagian pertama disalin beberapa kali, menjadikannya tidak berkesan.
Untuk menangani isu ini, adalah lebih cekap untuk mengelak daripada mencipta kepingan baharu. Sebaliknya, tambahkan kepingan log yang berkaitan terus pada kepingan yang dibahagikan. Pendekatan ini memastikan pengedaran sekata tanpa pertindihan yang tidak perlu.
chunkSize := (len(logs) + numCPU - 1) / numCPU for i := 0; i < len(logs); i += chunkSize { end := i + chunkSize if end > len(logs) { end = len(logs) } divided = append(divided, logs[i:end]) }
Penyelesaian yang dikemas kini ini dengan cekap akan memecah hirisan ke dalam kepingan yang lebih kecil teragih sama rata, menampung jumlah bilangan rentetan dan teras CPU untuk prestasi optimum.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memotong Slice Besar dengan Berjuta-juta Rentetan untuk Pemprosesan Selari dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!