Rumah  >  Artikel  >  hujung hadapan web  >  Pengaturcaraan selari dalam JavaScript menggunakan Pekerja Web dan SIMD.js

Pengaturcaraan selari dalam JavaScript menggunakan Pekerja Web dan SIMD.js

PHPz
PHPzke hadapan
2023-09-04 23:41:12882semak imbas

使用 Web Workers 和 SIMD.js 在 JavaScript 中进行并行编程

JavaScript ialah bahasa pengaturcaraan serba boleh yang boleh dijalankan pada kedua-dua sisi klien dan pelayan. Secara tradisinya, JavaScript melaksanakan tugas dengan cara berbenang tunggal, yang mengehadkan keupayaannya untuk mengendalikan operasi intensif secara pengiraan dengan cekap. Walau bagaimanapun, dengan kemajuan teknologi web, pengaturcaraan selari dalam JavaScript telah menjadi mungkin melalui penggunaan Pekerja Web dan SIMD.js. Artikel ini bertujuan untuk memperkenalkan konsep pengaturcaraan selari dalam JavaScript, memfokuskan pada Pekerja Web dan SIMD.js, dan menyediakan contoh kod untuk menggambarkan penggunaannya.

Ketahui tentang pengaturcaraan selari

Pengaturcaraan selari melibatkan pembahagian tugas kepada subtugas yang lebih kecil yang boleh dilaksanakan serentak, dengan itu menggunakan pelbagai sumber untuk meningkatkan prestasi. Dalam JavaScript, pengaturcaraan selari amat berfaedah untuk tugas yang melibatkan pengiraan kompleks, pemprosesan data dan simulasi. Dengan memanfaatkan keselarian, pembangun boleh memanfaatkan pemproses berbilang teras moden dan melaksanakan tugas dengan lebih cekap.

Pekerja rangkaian

Web Workers membenarkan kod JavaScript dilaksanakan dalam urutan latar belakang yang berasingan, membolehkan pemprosesan selari. Tidak seperti urutan UI utama, yang mengendalikan interaksi dan pemaparan pengguna, Pekerja Web berjalan secara bebas dan tidak menyekat urutan UI. Ini membolehkan melaksanakan tugas intensif secara pengiraan tanpa menjejaskan tindak balas antara muka pengguna.

Buat Pekerja Web

Untuk membuat Web Worker, kami perlu mencipta fail JavaScript baharu khusus untuk kod Worker.

Mari kita pertimbangkan contoh menggunakan Pekerja Web untuk mengira pemfaktoran nombor.

Contoh

Pertimbangkan kod yang ditunjukkan di bawah.

// main.js
const worker = new Worker('worker.js');

worker.postMessage(10); // Send data to the worker

worker.onmessage = function (event) {
   const result = event.data; // Receive data from the worker
   console.log(result);
};

Berikut ialah kod worker.js.

// worker.js
self.onmessage = function (event) {
   const num = event.data;
   const result = calculateFactorial(num);
   self.postMessage(result);
};

function calculateFactorial(num) {
   if (num === 0 || num === 1) {
      return 1;
   } else {
      return num * calculateFactorial(num - 1);
   }
}

Arahan

Dalam contoh di atas, fail JavaScript utama main.js mencipta Pekerja Web baharu menggunakan pembina Pekerja dan menentukan kod Pekerja dalam fail worker.js yang berasingan. Kaedah postMessage() menghantar data ke urutan pekerja, dan pengendali acara onmessage menerima hasil yang dikira oleh urutan pekerja.

Keterbatasan dan Komunikasi

Pekerja Web mempunyai had, termasuk ketidakupayaan untuk mengakses DOM secara langsung atau melakukan operasi segerak. Walau bagaimanapun, mereka menyediakan mekanisme komunikasi antara utas utama dan utas pekerja melalui kaedah postMessage() dan pengendali acara onmessage. Ini membolehkan data ditukar antara utas utama dan utas pekerja dan hasil dikembalikan.

SIMD.js

Single Instruction, Multiple Data (SIMD) ialah teknologi pengkomputeran selari yang membolehkan berbilang operasi dilakukan secara serentak menggunakan vektorisasi. SIMD.js ialah sambungan JavaScript yang menyokong pengiraan SIMD, memberikan faedah prestasi untuk tugasan yang melibatkan pengiraan matematik intensif.

Jenis data SIMD

SIMD.js memperkenalkan jenis data baharu seperti SIMD.Float32x4 dan SIMD.Int32x4, yang mewakili vektor empat titik terapung dan nilai integer masing-masing. Jenis data ini membolehkan pengiraan selari pada berbilang elemen data secara serentak. SIMD.js beroperasi pada vektor ini, melakukan pengiraan dengan cekap dan memanfaatkan kuasa pemprosesan selari CPU moden.

Lakukan operasi SIMD

Mari kita terokai contoh yang menunjukkan cara melaksanakan operasi SIMD untuk mendarab dua tatasusunan mengikut elemen.

Contoh

Pertimbangkan kod yang ditunjukkan di bawah.

if (typeof SIMD !== 'undefined') {
   const array1 = [1, 2, 3, 4];
   const array2 = [5, 6, 7, 8];

   const simdArray1 = SIMD.Float32x4.load(array1, 0);
   const simdArray2 = SIMD.Float32x4.load(array2, 0);

   const result = SIMD.Float32x4.mul(simdArray1, simdArray2);
   const output = SIMD.Float32x4.extractLane(result, 0);

   console.log(output); // Output: 5, 12, 21, 32
} else {
   console.log('SIMD not supported in this browser.');
}

Arahan

Dalam contoh di atas, kami mula-mula menyemak sama ada penyemak imbas semasa menyokong API SIMD.js. Jika disokong, kami boleh mencipta dua tatasusunan SIMD (simdArray1 dan simdArray2) dengan memuatkan nilai daripada tatasusunan JavaScript biasa. Kami kemudian melakukan pendaraban mengikut unsur pada tatasusunan SIMD menggunakan fungsi SIMD.Float32x4.mul(). Akhir sekali, kami mengekstrak nilai lorong menggunakan fungsi SIMD.Float32x4.extractLane().

Keluaran coretan kod akan bergantung pada sokongan penyemak imbas untuk SIMD.js. Jika SIMD.js disokong, output akan menjadi pendaraban mengikut unsur bagi dua tatasusunan, iaitu [5, 12, 21, 32]. Jika tidak, kod akan log mesej yang menunjukkan bahawa penyemak imbas semasa tidak menyokong SIMD.

Kesimpulan

Pengaturcaraan selari dalam JavaScript menggunakan Pekerja Web dan SIMD.js membuka kemungkinan baharu untuk mengoptimumkan prestasi dan mengendalikan tugas intensif pengiraan. Pekerja Web membenarkan JavaScript melaksanakan tugas secara serentak di latar belakang, manakala SIMD.js memanfaatkan pengiraan SIMD untuk operasi matematik yang lebih pantas. Dengan memanfaatkan teknik pengaturcaraan selari ini, pembangun boleh menjadikan aplikasi JavaScript lebih responsif dan cekap.

Dalam artikel ini, kami meneroka asas pengaturcaraan selari dalam JavaScript, memfokuskan pada Pekerja Web dan SIMD.js. Kami membincangkan cara membuat dan berkomunikasi dengan Pekerja Web, serta had dan faedah yang mereka berikan. Selain itu, kami meneroka sambungan SIMD.js, menunjukkan cara melaksanakan operasi SIMD pada tatasusunan. Dengan memanfaatkan kuasa pengaturcaraan selari, pembangun boleh mengeluarkan potensi penuh JavaScript untuk menyelesaikan tugasan yang kompleks dan intensif sumber.

Atas ialah kandungan terperinci Pengaturcaraan selari dalam JavaScript menggunakan Pekerja Web dan SIMD.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Memproses data dengan Sails.jsArtikel seterusnya:Memproses data dengan Sails.js