パフォーマンス チューニングのための 7 つのヒント AngularJS_AngularJS
AnglarJS は優れた Web フレームワークとして、フロントエンド開発の負担を大幅に簡素化できます。最近、Sebastian Fröstl はブログ投稿「長いリストの AngularJS パフォーマンス チューニング」で、複雑なデータ構造を含む大きなリストを処理する場合、AngularJS の実行が非常に遅いと述べました。彼は記事の中で解決策も共有しました。以下は記事の翻訳です。
AnglarJS は優れていますが、複雑なデータ構造を含む大きなリストを扱う場合、実行が非常に遅くなります。これは、コア管理ページを AngularJS に移行するときに発生した問題です。これらのページは 500 行のデータを表示するときにスムーズに動作するはずですが、最初の方法ではレンダリングに 7 秒という驚くべき時間がかかりました。
その後、実装プロセス中に 2 つの主なパフォーマンスの問題があることがわかりました。 1 つは「ng-repeat」ディレクティブに関連し、もう 1 つはフィルターに関連します。
以下では、さまざまな方法でパフォーマンスの問題を解決した経験を共有し、皆様にインスピレーションをお届けできることを願っています。
1. 大きなリストを処理すると、AngularJS の ng-repeat が遅くなるのはなぜですか?
AngularJS の ng-repeat は、2500 を超える双方向データ バインディングを処理すると速度が低下します。これは、AngularJS が「ダーティ チェック」機能を通じて変更を検出するためです。各チェックには時間がかかるため、複雑なデータ構造を含む大きなリストはアプリケーションの速度を低下させます。
2. パフォーマンスを向上させるための前提条件
時間記録コマンド
リストのレンダリングにかかる時間を測定するために、「ng-repeat」の属性「$last」を使用して時間を記録する簡単なプログラムを作成しました。時間は TimeTracker サービスに保存されるため、時間の記録はサーバー側でのデータのロードから分離されます。
// レンダリング時間を記録するためのポストリピートディレクティブ angular.module('siApp.services').directive('postRepeatDirective', ['$timeout', '$log', 'TimeTracker', function($timeout, $log, TimeTracker) { return function(scope, element, attrs) { if (scope.$last){ $timeout(function(){ var timeFinishedLoadingList = TimeTracker.reviewListLoaded(); var ref = new Date(timeFinishedLoadingList); var end = new Date(); $log.debug("## DOM レンダリング リストを取りました: " + (end - ref) + " ms") } } ]); // HTML で使用します。
Chrome デベロッパー ツールのタイムライン プロパティ
Chrome デベロッパー ツールの [タイムライン] タブでは、イベント、ブラウザーの 1 秒あたりのフレーム数、メモリ割り当てを確認できます。 「メモリ」ツールは、メモリ リークとページに必要なメモリを検出するために使用されます。ページのちらつきの問題は、フレーム レートが 30 フレーム/秒未満の場合に発生します。 「フレーム」ツールは、レンダリング パフォーマンスを理解するのに役立ち、JavaScript タスクによって費やされた CPU 時間を表示することもできます。
3. リストのサイズを制限することによる基本的なチューニング
この問題を軽減する最善の方法は、表示されるリストのサイズを制限することです。これは、ページネーションと無限スクロール バーの追加によって実現できます。
ページネーション
ページネーションには、AngularJS の「limitTo」フィルター (AngularJS バージョン 1.1.4 以降) と「startFrom」フィルターを使用できます。表示リストのサイズを制限することで、レンダリング時間を短縮できます。これは、レンダリング時間を短縮する最も効率的な方法です。
// コントローラー内のページネーション $scope.currentPage = 0; $scope.numberOfPages = function() { return Math.ceil($scope.displayedItemsList.length/ $scope.pageSize); ; // フィルターから開始 angular.module('app').filter('startFrom', function() { return function(input, start) { return input.slice(start); }; // HTML で使用 //ページネーション ボタン{{$index + 1}}
ページングを使用できない、または使用したくないが、フィルタリング プロセスが非常に遅い場合は、必ず最初の 5 つの手順を確認し、「ng-show」を使用して冗長なリスト要素を非表示にしてください。
無限スクロールバー
この方法について詳しく知りたい場合は、http://binarymuse.github.io/ngInfiniteScroll/
にアクセスしてください。4. 7 つのチューニングルール
1. データバインディングなしでリストをレンダリングします
データ バインディングがパフォーマンスの問題の原因となる可能性が最も高いため、これは最も明白な解決策です。リストを 1 回だけ表示し、データを更新または変更する必要がない場合は、データ バインディングを放棄するのが優れた解決策です。残念ながら、あなたは自分のデータをコントロールできなくなりますが、私たちにはこの法律を利用する以外に選択肢はありません。詳細については、https://github.com/Pasvaz/bindonceをご覧ください。
2. データの計算にインライン メソッドを使用しないでください
コントローラーでリストを直接フィルターするには、フィルター リンクを取得するメソッドを使用しないでください。 「ng-repeat」は、すべての [$digest(http://docs.angularjs.org/api/ng.$rootScope.Scope#$digest)%5D 式を評価します。この例では、「filteredItems()」はフィルターされたリンクを返します。評価プロセスが遅いと、アプリケーション全体の速度が急速に低下します。
//頻繁に評価する必要があるため、これは良い方法ではありません。
//これは使用されるメソッドです
3. 2 つのリストを使用します (1 つはビュー表示用、もう 1 つはデータ ソースとして)
表示するリストをデータ全体のリストから分離することは、非常に便利なモデルです。一部のフィルターを前処理して、キャッシュに保存されているリンクをビューに適用できます。次のケースは、基本的な実装プロセスを示しています。 filteredLists 変数はキャッシュ内のリンクを保持し、applyFilter メソッドはマッピングを処理します。
/* コントローラー */ // 基本リスト var items = [{name:"John", active:true}, {name:"Adam"}, {name:"Chris"}, {name:"Heather" }]; // selectedList を初期化 $scope.displayedItems = items; // フィルター キャッシュ var filteredLists['active'] = $filter('filter)(items, {"active" : true}); scope.applyFilter = function(type) { if (filteredLists.hasOwnProperty(type){ // フィルターがキャッシュされているかどうかを確認します $scope.displayedItems = filteredLists[type]; } else { /* キャッシュされていないフィルター処理 */ } } // リセットfilter $scope.resetFilter = function() { $scope.displayedItems = items } /* 表示 */アクティブを選択
{{item.name}}
4. 他のテンプレートでは ng-show の代わりに ng-if を使用します
クリックしてリスト項目の詳細情報を表示するなど、追加情報を表示するために命令またはテンプレートを使用する場合は、必ず ng-if (AngularJSv. 1.1.5 以降) を使用してください。 ng-if はレンダリングを防止します (ng-show と比較して)。したがって、必要に応じて他の DOM およびデータ バインディングを評価できます。
上記のコンテンツでは、AngularJS のパフォーマンス チューニングに関する 7 つの提案について詳しく説明しています。気に入っていただければ幸いです。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











ベスト プラクティス: CentOS で Web サーバーを構築するためのパフォーマンス チューニング ガイド 概要: この記事は、CentOS で Web サーバーを構築するユーザーにパフォーマンス チューニングのベスト プラクティスを提供し、サーバーのパフォーマンスと応答速度を向上させることを目的としています。いくつかの主要な調整パラメータと一般的に使用される最適化手法が紹介され、読者がこれらの手法をよりよく理解し、適用できるようにいくつかのサンプル コードが提供されます。 1. 不要なサービスを停止する CentOS 上で Web サーバーを構築すると、デフォルトで不要なサービスが起動され、システムリソースを占有します。

C++ のメモリ使用量を最適化するにはどうすればよいですか? Valgrind などのメモリ分析ツールを使用して、メモリ リークやエラーをチェックします。メモリ使用量を最適化する方法: スマート ポインタを使用してメモリを自動的に管理します。コンテナ クラスを使用してメモリ操作を簡素化します。過剰な割り当てを避け、必要な場合にのみメモリを割り当てます。メモリ プールを使用して、動的割り当てのオーバーヘッドを削減します。メモリ リークを定期的に検出して修正します。

Linux は、サーバー システムで広く使用されている優れたオペレーティング システムです。 Linux システムを使用するプロセスでは、サーバー負荷の問題がよく発生します。サーバー負荷とは、サーバーのシステム リソースが現在の要求を満たすことができず、システム負荷が高くなりすぎて、サーバーのパフォーマンスに影響を与えることを意味します。この記事では、Linux システムにおける一般的なサーバー負荷の問題とその解決策を紹介します。 1. CPU 負荷が高すぎる サーバーの CPU 負荷が高すぎると、システムの応答が遅くなったり、リクエストの処理時間が長くなるなどの問題が発生します。 Cの場合

Vue 開発では、パフォーマンスは非常に重要な問題です。優れたパフォーマンスのアプリケーションを開発できれば、ユーザーエクスペリエンスと市場競争力は大幅に向上します。これを達成するには、パフォーマンス テストとパフォーマンス チューニングを実行する必要があります。この記事では、パフォーマンステストとパフォーマンスチューニングを実行する方法を紹介します。 1. パフォーマンス テスト パフォーマンス テストは、アプリケーションのパフォーマンスを向上させるための鍵です。アプリケーションのパフォーマンス上の問題を引き起こす要因を検出し、それらを最適化します。性能テストを行うには、以下の方法が考えられます。 1. ベンチマークテスト ベンチマークテストは、

C++ コードのパフォーマンス チューニングを実行するにはどうすればよいですか? C++ は、高性能プログラミング言語として、ゲーム開発、組み込みシステムなど、高いパフォーマンスが要求される多くの分野で広く使用されています。ただし、C++ プログラムを作成する場合、パフォーマンスのボトルネックという課題に直面することがよくあります。プログラムの実行効率と応答時間を改善するには、コードのパフォーマンス チューニングを実行する必要があります。この記事では、C++ コードのパフォーマンス チューニングを実行するための一般的な方法とテクニックをいくつか紹介します。 1. アルゴリズムの最適化 ほとんどの場合、パフォーマンスのボトルネックはアルゴリズム自体に起因することがよくあります。したがって、

JVM メモリ モデルの実装方法と Java の基盤テクノロジのパフォーマンス チューニング はじめに: Java は、オブジェクト指向プログラミング言語として、クロスプラットフォーム、高性能、優れたセキュリティという特徴を持ち、多くの大規模なアプリケーションで広く使用されています。プロジェクト。ただし、同時実行性が高く大量のデータが存在するシナリオでは、JVM メモリ モデルが適切に構成および調整されていないと、プログラムのパフォーマンスが低下したり、クラッシュしたりする可能性があります。この記事では、JVM メモリ モデルとそのチューニング方法を紹介し、具体的なコード例を示します。 1. JVM メモリ モデル JVM メモリ モデルは Ja

インターネットの急速な発展に伴い、Web アーキテクチャを採用するアプリケーションがますます増えており、Web 開発で広く使用されているスクリプト言語として PHP の注目と応用も増えています。ビジネスの継続的な開発と拡大に伴い、PHPWeb アプリケーションのパフォーマンスの問題が徐々に明らかになり、パフォーマンス チューニングをどのように実行するかが PHPWeb 開発者にとって重要な課題となっています。次に、この記事では、PHP 開発者がパフォーマンスを向上できるようにするための、PHP バックエンド API 開発におけるパフォーマンス チューニング テクニックを紹介します。

コンテナーのリソース制限とパフォーマンス チューニングに Docker を使用する方法 はじめに: コンテナー化テクノロジーは、ソフトウェア開発および展開プロセスにおいて非常に人気があり、重要な選択肢となっています。現在、最もよく知られているコンテナ化ツールの 1 つである Docker は、開発者に便利で軽量、ポータブルな展開ソリューションを提供します。ただし、コンテナ環境の安定性とパフォーマンスを確保するには、コンテナ リソースの使用量を合理的に制限し、コンテナのパフォーマンスを最適化することが非常に重要です。この記事ではDockerを使ってコンテナのリソースを制限する方法を紹介します。
