ホームページ ウェブフロントエンド jsチュートリアル WebWorkers - フロントエンド向けのハイパフォーマンス コンピューティング

WebWorkers - フロントエンド向けのハイパフォーマンス コンピューティング

Nov 18, 2017 pm 02:30 PM
web ハイパフォーマンス

記事全文を読む前に、WebWorkers とは何か、WebWorkers と Web ハイ パフォーマンス コンピューティングの関係について簡単に説明します。

まず、WebWorkers とは何ですか?

簡単に言えば、WebWorkers は HTML5 の新しい API です。Web 開発者は、この API を使用して、UI をブロックせずにスクリプトをバックグラウンドで実行でき、多くの計算を必要とし、CPU を最大限に活用することができます。マルチコア。

この記事の紹介https://www.html5rocks.com/en/tutorials/workers/basics/、または対応する中国語版を読むことができます。


Web ワーカーの仕様では、Web アプリケーションで バックグラウンド スクリプトを生成するための API を定義しています。Web ワーカーを使用すると、UI などをブロックすることなく、長時間実行されるスクリプトを起動して計算負荷の高いタスクを処理することができます。ユーザー間のアクションを処理するスクリプト


このリンク (https://nerget.com/rayjs-mt/rayjs.html) を開いて、WebWorkers の高速化効果をご自身で体験してください。


基本的にすべてのブラウザが WebWorkers をサポートするようになりました。

WebWorkers - フロントエンド向けのハイパフォーマンス コンピューティング

Parallel.js

WebWorkers インターフェイスを直接使用するのはまだ面倒です。幸いなことに、これはすでに誰かが Parallel.js をカプセル化しています。


Parallel.js は、node

を通してインストールできることに注意してください:


$ npm installParalleljs


ただし、これは、node のクラスターモジュールを使用して、

node.js の下で使用されます。ブラウザで使用したい場合は、js:

<script src="parallel.js"></script>
ログイン後にコピー


を直接適用する必要があります。そうすれば、グローバル変数Parallelを取得できます。 Parallel には、map とreduce という 2 つの関数型プログラミング インターフェイスが用意されており、これにより同時操作が非常に便利になります。


まず問題を定義しましょう。ビジネスは比較的複雑なので、ここでは問題を 1-1,0000,0000 の合計を求め、次に 1-1,0000,0000 を順番に引くように単純化します。答えは明らかです: 0! これは、数値が大きすぎるとデータの精度に問題が生じたり、2 つの方法の結果が多少異なったりして、並列方法が信頼できないと感じられるためです。この問題は、Mac Pro chrome61 で直接 js を実行するだけで約 1.5 秒かかります (実際のビジネス上の問題には 15 秒かかります。ユーザー テスト中にブラウザーが強制終了するのを避けるために、問題を単純化しました)。

const N = 100000000;// 总次数1亿
 
function sum(start, end) {
  let total = 0;
  for (let i = start; i<=end; i += 1) total += i;
  for (let i = start; i<=end; i += 1) total -= i;
  return total;
}
 
function paraSum(N) {
  const N1 = N / 10;//我们分成10分,没分分别交给一个web worker,parallel.js会根据电脑的CPU核数建立适量的workers
  let p = new Parallel([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    .require(sum);
  return p.map(n => sum((n - 1) * 10000000 + 1, n * 10000000))// 在parallel.js里面没法直接应用外部变量N1
    .reduce(data => {
      const acc = data[0];
      const e = data[1];
      return acc + e;
    });
}
ログイン後にコピー


コードは比較的単純です。ここでは、私が最初に使用し始めたときに遭遇したいくつかの落とし穴について説明します。


必要な関数をすべてrequireする


例えば、アピールコードでsumを使用する場合、sumに別の関数fを使用する場合は、事前にrequire(sum)する必要があります。 (f) 、同様に、 g が f で使用される場合、使用されるすべての定義された関数が必要になるまで、 require(g) も必要になります。 。 。 。


変数を要求できません


アピールコードでは、最初にN1を定義しましたが、使用できませんでした


ES6をES5にコンパイルした後に問題が発生し、Chromeはエラーを報告しませんでした


実際のプロジェクト 中学校の初めに、ES6 の機能である配列の分割を使用しました。もともとこれは非常に単純な機能でしたが、現在はほとんどのブラウザーでサポートされています。ただし、そのときに設定した Babel は ES5 にコンパイルされるため、コード _slicedToArray が生成されます。Babel を使用してオンラインでテストすることはできません。 Chrome では動作します。エラー メッセージはありません。長い間確認した後、Firefox で開いたところ、次のエラー メッセージが見つかりました。全能。 。 。


このデモページでテストすることができます。もちろん、速度の向上はコンピューターの CPU のコア数によって異なります。 さらに、後で同じコンピュータで Firefox 55.0.3 (64 ビット) をテストしたところ、アピール コードに実際にかかった時間はわずか 190 ミリ秒でした。 ! ! Safari9.1.1でも約190msです。 。

フロントエンドハイパフォーマンスコンピューティングの他の特性と指標についても後ほど紹介しますので、引き続き注目してください。


以上がWebWorkers - フロントエンド向けのハイパフォーマンス コンピューティングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Swoole を使用して高性能 HTTP リバース プロキシ サーバーを実装する方法 Swoole を使用して高性能 HTTP リバース プロキシ サーバーを実装する方法 Nov 07, 2023 am 08:18 AM

Swoole を使用して高性能 HTTP リバース プロキシ サーバーを実装する方法 Swoole は、PHP 言語に基づいた高性能、非同期、同時ネットワーク通信フレームワークです。一連のネットワーク機能を提供し、HTTP サーバー、WebSocket サーバーなどの実装に使用できます。この記事では、Swoole を使用して高性能 HTTP リバース プロキシ サーバーを実装する方法と、具体的なコード例を紹介します。環境構成 まず、サーバーに Swoole 拡張機能をインストールする必要があります

PHP と WebSocket: 高性能のリアルタイム アプリケーションの構築 PHP と WebSocket: 高性能のリアルタイム アプリケーションの構築 Dec 17, 2023 pm 12:58 PM

PHP と WebSocket: 高性能リアルタイム アプリケーションの構築 インターネットが発展し、ユーザーのニーズが高まるにつれて、リアルタイム アプリケーションはますます一般的になってきています。従来の HTTP プロトコルには、最新のデータを取得するために頻繁なポーリングや長時間のポーリングが必要になるなど、リアルタイム データを処理する場合にいくつかの制限があります。この問題を解決するために、WebSocket が登場しました。 WebSocket は、双方向通信機能を提供する高度な通信プロトコルであり、ブラウザとサーバーの間でリアルタイムの送受信を可能にします。

C++ ハイパフォーマンス プログラミングのヒント: 大規模なデータ処理のためのコードの最適化 C++ ハイパフォーマンス プログラミングのヒント: 大規模なデータ処理のためのコードの最適化 Nov 27, 2023 am 08:29 AM

C++ は、開発者に柔軟性と拡張性を提供する高性能プログラミング言語です。特に大規模なデータ処理シナリオでは、C++ の効率と高速な計算速度が非常に重要です。この記事では、大規模なデータ処理のニーズに対応するために C++ コードを最適化するためのテクニックをいくつか紹介します。従来の配列の代わりに STL コンテナを使用する C++ プログラミングでは、配列は一般的に使用されるデータ構造の 1 つです。ただし、大規模なデータ処理では、vector、deque、list、set などの STL コンテナーを使用すると、より多くの処理が実行される可能性があります。

Go 言語を使用して高性能音声認識アプリケーションを開発および実装する Go 言語を使用して高性能音声認識アプリケーションを開発および実装する Nov 20, 2023 am 08:11 AM

科学技術の継続的な発展に伴い、音声認識技術も大きく進歩し、応用されています。音声認識アプリケーションは、音声アシスタント、スマート スピーカー、仮想現実などの分野で広く使用されており、より便利でインテリジェントな対話方法を人々に提供しています。高性能音声認識アプリケーションを実装する方法は、検討する価値のある問題となっています。近年、音声認識アプリケーションの開発において、高機能なプログラミング言語としてGo言語が注目を集めています。 Go 言語は、同時実行性が高く、記述が簡潔で、実行速度が速いという特徴があり、高パフォーマンスの言語を構築するのに非常に適しています。

Go 言語を使用して高性能の顔認識アプリケーションを開発する Go 言語を使用して高性能の顔認識アプリケーションを開発する Nov 20, 2023 am 09:48 AM

Go 言語を使用して高性能の顔認識アプリケーションを開発する 要約: 顔認識テクノロジは、今日のインターネット時代において非常に人気のあるアプリケーション分野です。この記事では、Go 言語を使用して高性能の顔認識アプリケーションを開発する手順とプロセスを紹介します。 Go 言語の同時実行性、高性能、使いやすさの機能を使用することで、開発者は高性能の顔認識アプリケーションをより簡単に構築できます。はじめに: 今日の情報社会では、顔認識技術はセキュリティ監視、顔決済、顔ロック解除などの分野で広く使用されています。インターネットの急速な発展により、

コックピット Web UI から管理アクセスを有効にする方法 コックピット Web UI から管理アクセスを有効にする方法 Mar 20, 2024 pm 06:56 PM

Cockpit は、Linux サーバー用の Web ベースのグラフィカル インターフェイスです。これは主に、初心者/熟練ユーザーにとって Linux サーバーの管理を容易にすることを目的としています。この記事では、Cockpit アクセス モードと、CockpitWebUI から Cockpit への管理アクセスを切り替える方法について説明します。コンテンツ トピック: コックピット エントリ モード 現在のコックピット アクセス モードの確認 CockpitWebUI からコックピットへの管理アクセスを有効にする CockpitWebUI からコックピットへの管理アクセスを無効にする まとめ コックピット エントリ モード コックピットには 2 つのアクセス モードがあります。 制限付きアクセス: これは、コックピット アクセス モードのデフォルトです。このアクセス モードでは、コックピットから Web ユーザーにアクセスできません。

ウェブってどういう意味ですか ウェブってどういう意味ですか Jan 09, 2024 pm 04:50 PM

Web は、ワールド ワイド ウェブとしても知られるグローバル ワイド エリア ネットワークであり、インターネットのアプリケーション形式です。 Web はハイパーテキストとハイパーメディアに基づいた情報システムであり、ユーザーはハイパーリンクを通じて異なる Web ページ間を移動することにより、情報を閲覧したり入手したりすることができます。 Web の基礎はインターネットであり、統一および標準化されたプロトコルと言語を使用して、異なるコンピューター間でのデータ交換と情報共有を可能にします。

PHP は Web 開発におけるフロントエンドですか、それともバックエンドですか? PHP は Web 開発におけるフロントエンドですか、それともバックエンドですか? Mar 24, 2024 pm 02:18 PM

PHP は Web 開発のバックエンドに属します。 PHP はサーバー側のスクリプト言語であり、主にサーバー側のロジックを処理し、動的な Web コンテンツを生成するために使用されます。フロントエンド テクノロジーと比較して、PHP はデータベースとの対話、ユーザー リクエストの処理、ページ コンテンツの生成などのバックエンド操作に多く使用されます。次に、特定のコード例を使用して、バックエンド開発における PHP のアプリケーションを説明します。まず、データベースに接続してデータをクエリするための簡単な PHP コード例を見てみましょう。

See all articles