ホームページ ウェブフロントエンド htmlチュートリアル コード running_html/css_WEB-ITnose に対する try catch のパフォーマンスへの影響

コード running_html/css_WEB-ITnose に対する try catch のパフォーマンスへの影響

Jun 21, 2016 am 08:46 AM

原因

JavaScript コードで例外をキャッチするには、一般的に try catch が使用されますが、try catch の使用はコードのパフォーマンスに影響しますか?答えは「はい」ですが、その数は不明です。

フロントエンドのオンライン スクリプト エラーをキャプチャする方法:

window .

try {

//コード

} catch ( e ) {

JSTracker . Push ( e ) ;

throw e ; // に再度エラーをスローすることをお勧めします。テストの失敗を回避する 異常を発見する

}

実験方法を設計する

単純な設計計画は比較実験です。

空白グループ 1: [try catch なしでデータを 1,000 万回モジュロするのに時間がかかります]

< DOCTYPE html > ;

< 1 トライキャッチなしでは時間がかかります

! function ( ) {

//try catch なしでは時間がかかります

var t = new Date ()

//コードの開始時は時間がかかります

for ( var i = 0 ; i < 100000000 ; i ++ ) {

var p = i % 2 ;

}

//End時間のかかるコード

document . write ( new Date ( ) – t ) ;

< / ヘッド >

<参照グループ 2: [時間のかかるコードを try で囲み、

>

2 時間のかかるインラインコードの状況

! function ( ) {

//try

var t = new Date () ;

// 時間のかかるコードが始まります

for ( var i = 0 ; i <100000000 ; i ++ ) {

var p = i % 2 ; >}

//時間のかかるコードの終わり

throw new Error ( ) ;

} catch ( e ) {

}

ドキュメント . write ( new Date ( ) – t ) ;

< >

< body >

< / html >

コードは、時間のかかる外部コードで囲まれています。

<

< try

の時間のかかる状況

function run () {

//時間のかかるコードの開始

for ( var i = 0 ; i

var p = i % 2;

}

//時間のかかるコードの終わり

}

//時間のかかるインラインコードtry Case

var t = new Date ( ) ;

try {

run ( ) ;

throw new Error ( ) ; 🎜 > } catch ( e ) {

}

ドキュメント . write ( new Date ( ) – t ) ;

< ; /script>

< 本文

< ;

参照グループ 4: [時間のかかるコードを catch で囲み、コードをインライン化します]

<

4 時間のかかるインラインコード> <script></p> <p> ! function ( ) { </p> <p>//catch のインラインコードの時間がかかる状況 </p> <p> var t = new Date ( ) ; > </p> try { <p> </p> throw new Error ( ) ; <p> </p> } catch ( e ) { <p> </p>//時間のかかるコードは <p> </p> で始まります( var i = 0 ; i var p = i % 2 ; <p> </p>}<p> </p>//時間のかかるコードの終わり<p> </p>}<p> </p> ドキュメント . write ( new Date ( ) – t ) ; <p> </p></script>

< 本文

参照グループ 5: [時間のかかるコードをキャッチで囲み、接続する]

< ! ;

のインラインコードの時間のかかる状況>

! 関数 ( ) {

function run () {

//時間のかかるコードの開始

for ( var i = 0 ; i <100000000 ; i ++ ) {

var p = i % 2;

}

//時間のかかるコードの終わり

}

//インラインコードの時間のかかる状況in catch

var t = new Date () ;

try {

throw new Error () ;

} catch ( e ) {

実行 ( ) ;

}

ドキュメント . write (

) ;

;/ スクリプト>

< ボディ >

< ;

実行結果 (例として Chrome のみが選択されています)

概要を示します

不使用 try-catch try 中耗时,内联代码 try 中耗时,外联代码 catch 中耗时,内联代码 catch 中耗时,外联代码
Chrome51 98.2 1026.9 107.7 1028.5 105.9

try catch を使用するかどうかtry のコードまたは catch のコードのパフォーマンス消費は同じです。

  • 注意が必要なパフォーマンスの消費は、try catch に直接あまり多くのコードを入れないことです (変数を宣言しすぎないこと)。実行するすべてのコードを別のコードに入れるのが最善です。関数内ではこの関数を呼び出すことで実行されます。

  • 2 番目の点については、ECMA の try catch についての説明を確認できます。コードが try catch に入ると、JS エンジンは現在のレキシカル環境をコピーします。すべての変数の現在のスコープ。

  • 推奨されます

try catch を使用する場合は、try catch を比較的クリーンなスコープに配置するように努め、できれば try catch ステートメントに十分な少数の変数があることを確認してください。関数を通じてメソッドを呼び出してキャッチを試みます。

テストでの現象の説明

テスト中にまだ質問が見つかりました。次の 2 つのコードは Chrome 44 で実行されます。空の Try を追加すると、結果は大きく異なります。 catch 平均: 850 ミリ秒、プラス前: 140 ミリ秒。

! function ( ) {

// try catch を使用しないと時間がかかります

var t = new Date ( ) ; /時間のかかるコードの開始

for ( var i = 0 ; i

var p = i % 2 ;

}

//時間のかかるコードの終わり

document . write ( new Date ( ) – t ) ;

try {

} catch ( e ) {

}

} ( ) ;

! function ( ) {

//try catch を使用しないと時間がかかります

var t = new Date () ;

//時間のかかるコードが始まります

for ( var i = 0 ; i

var p = i % 2;

}

//時間のかかるコードの終わり

document . write ( new Date ( ) – t ) ;

} ( ) ;

実は、その理由は非常に簡単です

これにコードを変更するだけで、時間がかかります:

! function () {

! function () {

// try catch を使用しないと時間がかかります

var t = new Date ( ) ;

// 時間のかかるコードの開始

for ( var i = 0 ; i

var p = i % 2 ;

}

//時間のかかるコードの終わり

ドキュメント . write ( new Date ( ) – t ) ; ;

try {

} catch ( e ) {

}

} ( ) ;

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? 公式アカウントのキャッシュの更新の難しさ:バージョンの更新後のユーザーエクスペリエンスに影響を与える古いキャッシュを回避する方法は? Mar 04, 2025 pm 12:32 PM

公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

WebページのPNG画像にストローク効果を効率的に追加する方法は? WebページのPNG画像にストローク効果を効率的に追加する方法は? Mar 04, 2025 pm 02:39 PM

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

See all articles