Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Memotong Slice Besar dengan Berjuta-juta Rentetan untuk Pemprosesan Selari dengan Cekap?

Bagaimanakah Saya Boleh Memotong Slice Besar dengan Berjuta-juta Rentetan untuk Pemprosesan Selari dengan Cekap?

Linda Hamilton
Lepaskan: 2024-12-24 01:49:10
asal
833 orang telah melayarinya

How Can I Efficiently Chunk a Large Go Slice with Millions of Strings for Parallel Processing?

Slice Chunking in Go

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])
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan