Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengisihan selari tatasusunan PHP: memanfaatkan CPU berbilang teras untuk meningkatkan prestasi

Pengisihan selari tatasusunan PHP: memanfaatkan CPU berbilang teras untuk meningkatkan prestasi

PHPz
PHPzasal
2024-04-27 10:03:02481semak imbas

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.

PHP 数组并行排序:利用多核 CPU 提升性能

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()

🎜Isih selari🎜🎜🎜Untuk menyelesaikan masalah ini, kami boleh memanfaatkan keupayaan pemprosesan selari PHP. Algoritma pengisihan selari membahagikan tatasusunan kepada berbilang segmen yang lebih kecil dan mengisih segmen secara serentak pada berbilang teras CPU. Apabila segmen diisih, ia digabungkan menjadi tatasusunan tertib. Kes praktikal tatasusunan: 🎜
composer require parallel/runtime
🎜 Dalam kebanyakan kes, pengisihan selari adalah jauh lebih pantas daripada pengisihan bersiri pada CPU berbilang teras. 🎜🎜🎜Nota🎜🎜🎜Untuk menggunakan fungsi parallel_sort(), anda perlu memasang pustaka selari. Anda boleh memasangnya menggunakan Komposer: 🎜rrreee

Atas 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!

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