プロジェクト開発のテクニカルサマリー&& JS実行効率の調査

予備開発が完了しました。後でテストする必要があります

このプロセスについて私が非常に心配したことの1つは、JSの実行効率です。
特定の場所を変更した後
、特定の理由を調査するのはそれよりも100倍高速です。ここに画像の説明を挿入ここに画像の説明を挿入

JSON +配列構造体を使用してデータの行と列(時間と数)を格納すると、配列の数が異なり、多くの時間がかかります。

方法1

次のcode()をテストします

console.time('time'); 
	var json={
    
    };
	for(var j=0;j<DEFECT_CNAME.length;j++){
    
    //把缺陷名按顺序放入JSON中  为对应DEFECT_CNAME以便循环输出
		json[DEFECT_CNAME[j]]=new Array();//放入数组
		for (var i = 0; i < PRODUCE_TIME.length; i++) {
    
    
			json[DEFECT_CNAME[j]][i] = new Array();
			for (var x= 0; x < 3; x++) {
    
    
				if(x==0){
    
    
					json[DEFECT_CNAME[j]][i][x] = PRODUCE_TIME[i];
				}else{
    
    
					json[DEFECT_CNAME[j]][i][x] = 0;
				}
			}
		}
	}	

	console.timeEnd('time'); 	
	var j=0;

実行結果は以下のとおりです。
ここに画像の説明を挿入

時間がかかるここに画像の説明を挿入

方法2
console.time('time'); 
	var json={
    
    };
	for(var j=0;j<DEFECT_CNAME.length;j++){
    
    //把缺陷名按顺序放入JSON中  为对应DEFECT_CNAME以便循环输出
		json[DEFECT_CNAME[j]]=new Array();//放入数组
		for (var i = 0; i < 2; i++) {
    
    
			json[DEFECT_CNAME[j]][i] = new Array();
			for (var x= 0; x < PRODUCE_TIME.length; x++) {
    
    
				json[DEFECT_CNAME[j]][i][x] = 0;
			}
		}
	}
	console.timeEnd('time'); 

実装の結果は次のとおりです。
ここに画像の説明を挿入
時間のかかる作業ここに画像の説明を挿入
は確かに約3倍高速ですが、明らかに問題はここにはありません。

そして、すべての開発タスクが実際に完了してから3日後、速度は図のようになります。ここに画像の説明を挿入

開発プロセスを思い出すと、次のメリットが得られる可能性が高くなり
ます。1。テーブルは最終的にデータ側でインデックス付けされます。
2.バックグラウンドでのクエリは、ページ数と表示数によって制限されます。フロントエンドとバックエンドで処理する必要のあるデータの量は少なく、最初は50,000項目を順番にチェックします。 ..
3.クエリステートメントが最適化され、SQLが変更され、double GROUP BYが使用されます。予備のデータ処理がクエリに配置されるため、フロントエンドとバックエンドでのデータ処理のロジックが簡素化されます。

テクニカルサマリー:

データ処理の優先順位は次のとおりです。

1、

データベースの最適化は絶対的な優先事項であり、サブデータベースのサブテーブル/インデックスの追加などの方法が最も効率的で、最適化の効果が最も高くなります。

2、

次に、さまざまなニーズに応じて処理するためにテーブルを検索するSQLステートメントがあります。これは、バックグラウンドおよびフォアグラウンドで処理するよりも効率的です。

3、

SQLが処理できないのは、ユーザーの操作のニーズに基づく必要のあるロジックであり、コードをコーディングするためにフロントとバックのJAVA / JSを使用する必要があるということです。
しかし、この部分には多くの考慮事項があります。たとえば、プログラム内のオブジェクトの数を制御するためのJVMのオブジェクトgc問題、論理最適化では再帰が少なく、スイッチ、シンタックスシュガー、ポリクローナルインターフェイス、さらには使用する場合が少なくなります。特定の状況でのマルチスレッド... javaプログラミング能力にはまだ改善の余地がたくさんあります

4、

フロントエンドJSは複雑なロジックを記述する必要がなく、さまざまなカスタマーサービスによってアクセスされるクライアントのパフォーマンスが異なるため、ユーザーエクスペリエンスの感覚が異なる可能性があります。

5、

この開発は多くのことを学び、さらに重要なことに、問題を解決するための多くの方法を学びました。私は成長したと感じています。
最も重要なことは、私が本当に初めて開発をしていることであり、それが何であるかを感じます。私の仕事をもたらします。幸福、それは本当に素晴らしい仕事です。
この勢いが今後も続くことを願っています。

おすすめ

転載: blog.csdn.net/Beatingworldline/article/details/113647751