Rumah >pembangunan bahagian belakang >Golang >Mengapa Penyelarasan Pengiraan Purata Bergerak dengan Goroutines Mengakibatkan Kemerosotan Prestasi?

Mengapa Penyelarasan Pengiraan Purata Bergerak dengan Goroutines Mengakibatkan Kemerosotan Prestasi?

Linda Hamilton
Linda Hamiltonasal
2024-12-23 21:48:16276semak imbas

Why Did Parallelizing a Go Moving Average Calculation with Goroutines Result in Performance Degradation?

Latar Belakang

Masalah ini melibatkan pengoptimuman fungsi Go untuk mengira purata bergerak bagi kepingan. Fungsi ini sememangnya memalukan selari, bermakna ia boleh dibahagikan dengan mudah kepada tugas bebas yang boleh dilaksanakan secara serentak.

Percubaan dan Hasil Pengoptimuman

Pemaju cuba menyelaraskan fungsi menggunakan goroutine dalam dua cara:

  • Moving_avg_concurrent2: Potongan dipecahkan kepada kepingan yang lebih kecil, dan setiap bahagian diproses oleh goroutine yang berasingan.
  • Moving_avg_concurrent3: Paradigma tuan/pekerja telah diterima pakai, di mana goroutine induk melahirkan berbilang goroutin pekerja untuk mengira purata bergerak bagi tetingkap berbeza bagi kepingan input.

Tanda aras menunjukkan bahawa kedua-dua pendekatan serentak berprestasi lebih teruk daripada fungsi bersiri asal moving_avg_serial4.

Mengapakah moving_avg_concurrent2 tidak skala?

Sebab mengapa moving_avg_concurrent2 tidak berskala ialah overhed mencipta dan mengurus gorout melebihi faedah selari. Dalam kes ini, overhed termasuk masa yang dibelanjakan untuk mencipta dan menjadualkan gorouti, serta masa yang dibelanjakan untuk komunikasi dan penyegerakan antara gorouti.

Mengapakah moving_avg_concurrent3 lebih perlahan daripada moving_avg_serial4?

Paradigma tuan/pekerja memperkenalkan overhed tambahan berbanding goroutine langsung pendekatan. Dalam moving_avg_concurrent3, terdapat keperluan untuk mencipta saluran untuk komunikasi antara goroutine induk dan pekerja, dan untuk menguruskan penghantaran dan penerimaan unit kerja. Overhed ini merendahkan lagi prestasi fungsi.

Adakah mungkin overhed goroutine menjana terlalu banyak overhed?

Ya, ada kemungkinan overhed goroutine boleh memberi kesan yang ketara kepada prestasi program. Goroutine ialah utas yang ringan, tetapi mereka masih mempunyai beberapa overhed yang dikaitkan dengan penciptaan, penjadualan dan penyegerakannya. Dalam kes moving_avg_concurrent3, overhed mengurus saluran dan komunikasi tuan/pekerja menambah masa jalan fungsi.

Atas ialah kandungan terperinci Mengapa Penyelarasan Pengiraan Purata Bergerak dengan Goroutines Mengakibatkan Kemerosotan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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