前提
プログラムを最速化したいです。参考にしたサイトも載せているのですが、配列の方式、検索の仕方、ループ分それぞれどれを採用すれば良いか分かりません。
jsonからデータを取り出していますが、文字列を保存して配列にするつもりです。
プログラムの内容
BOT関連をユーザーエージェントに応じて判定し、該当すればjavascriptをhtmlに書き込むプログラムです。
実現したいこと
- 配列からは最速でデータを取り出せるようにする
- ループ分の最速のものにする
- 検索方法も最速のものにする
参考にしたサイト
- https://qiita.com/keroxp/items/67804391a8d65eb32cb8
- https://nulab.com/ja/blog/nulab/100times-faster-performance-improvement-set-map/
該当のソースコード
javascript
1function getJSON() { 2 let req = new XMLHttpRequest(); 3 let Pattern; 4 let UserAgent = navigator.userAgent.replace(/\s+/g, ""); 5 let result; 6 req.onreadystatechange = function() { 7 // サーバーからのレスポンスが正常&通信が正常に終了したとき 8 if(req.readyState == 4 && req.status == 200) { 9 // 取得したJSONファイルの中身を変数へ格納 10 let data = JSON.parse(req.responseText); 11 // JSONのデータ数を取得 12 let i = 0; 13 let len = data.length; 14 15 for (i = 0; i < len; i=(i+1)|0){ 16 Pattern = new RegExp(data[i].pattern.replace(/\s+/g, "")); 17 18 if(Pattern.test(UserAgent) == true){ 19 result = true; 20 break; 21 } 22} 23 24 if(result == null){ 25 var script = document.createElement("script"); 26 script.type = "text/javascript"; 27 script.src = "/stats/JavaScript/maura-port-ship.js"; 28 document.head.appendChild(script); 29 } 30 31 } 32 }; 33 //HTTPメソッドとアクセスするサーバーのURLを指定 34 req.open("GET", "https://raw.githubusercontent.com/monperrus/crawler-user-agents/master/crawler-user-agents.json", false); 35 //実際にサーバーへリクエストを送信 36 req.send(null); 37} 38 39getJSON();
回答3件
あなたの回答
tips
プレビュー