Untuk tatasusunan besar, isihan selari PHP adalah jauh lebih pantas daripada isihan bersiri dengan memanfaatkan CPU berbilang teras. Algoritma ini membahagikan tatasusunan kepada segmen, menyusunnya pada berbilang teras secara serentak, dan menggabungkannya ke dalam tatasusunan tertib. Pengisihan selari boleh dicapai menggunakan fungsi parallel_sort() dalam pustaka parallelRuntime.
Pengisihan Selari Tatasusunan PHP: Menggunakan CPU Berbilang teras untuk Meningkatkan Prestasi
Pengenalan
Apabila memproses tatasusunan yang besar, operasi pengisihan boleh menjadi hambatan prestasi. Fungsi sort()
dan usort()
terbina dalam PHP menggunakan algoritma bersiri, yang bermaksud bahawa proses pengisihan hanya berjalan pada satu teras CPU. sort()
和 usort()
函数采用串行算法,这意味着排序过程仅在单个 CPU 核心上运行。
并行排序
为了解决这个问题,我们可以利用 PHP 的并行处理能力。并行排序算法将数组拆分为多个较小的段,同时在多个 CPU 核心上对这些段进行排序。当段排序完成后,再将它们合并成一个有序的数组。
实战案例
以下是如何使用 PHP 并行排序函数 parallel_sort()
排序一个大型数组:
use parallel\Runtime; $runtime = new Runtime; $array = range(0, 1000000); shuffle($array); $start = microtime(true); $runtime->parallel($array, function ($chunk) { sort($chunk); return $chunk; }); $end = microtime(true); echo "Elapsed time: " . ($end - $start) . " seconds\n";
比较
让我们将并行排序与串行排序进行比较,使用相同的数组:
$start = microtime(true); sort($array); $end = microtime(true); echo "Elapsed time (serial): " . ($end - $start) . " seconds\n";
在大多数情况下,并行排序在多核 CPU 上比串行排序显著更快。
注意
为了使用 parallel_sort()
composer require parallel/runtime
parallel_sort()
, anda perlu memasang pustaka selari. Anda boleh memasangnya menggunakan Komposer: 🎜rrreeeAtas ialah kandungan terperinci Pengisihan selari tatasusunan PHP: memanfaatkan CPU berbilang teras untuk meningkatkan prestasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!