回答編集履歴

9

 

2023/01/21 15:52

投稿

退会済みユーザー
test CHANGED
@@ -2,6 +2,9 @@
2
2
  この部分が、仮に、ネットワーク経由で json を取得するのではなく
3
3
  「https://raw.githubusercontent.com/monperrus/crawler-user-agents/master/crawler-user-agents.json のデータから pattern を抜きだしてソースコード中に直接記述する」
4
4
  という意味ならば、下記のような案が考えられます。
5
+
6
+ また、下記で有意な速度差を出すには、UserAgentのマッチング判定を、同じページ内で何回も繰り返す場合に限られます。
7
+ (一回しか判定しない場合は速度差はほとんどないものと考えられます)
5
8
 
6
9
  ---
7
10
 

8

 

2023/01/21 15:38

投稿

退会済みユーザー
test CHANGED
@@ -10,7 +10,7 @@
10
10
  ```
11
11
  このようにループ中で正規表現オブジェクトを都度生成するのは、わずかながら遅くなる原因になると思います。
12
12
 
13
- したがって、この部分はforループをなくしてあらかじめ**正規表現リテラルの配列**を記述し、
13
+ したがって、この部分はforループをなくしてあらかじめ**正規表現リテラル**を記述し、
14
14
  ```js
15
15
  if (/pattern1/.test(UserAgent) ||
16
16
  /pattern2/.test(UserAgent) ||

7

 

2023/01/21 15:38

投稿

退会済みユーザー
test CHANGED
@@ -1,5 +1,5 @@
1
1
  > jsonからデータを取り出していますが、文字列を保存して配列にするつもりです。
2
- この部分が、仮に、寝tgとワーク経由で json を取得するのではなく
2
+ この部分が、仮に、ネットワーク経由で json を取得するのではなく
3
3
  「https://raw.githubusercontent.com/monperrus/crawler-user-agents/master/crawler-user-agents.json のデータから pattern を抜きだしてソースコード中に直接記述する」
4
4
  という意味ならば、下記のような案が考えられます。
5
5
 

6

  

2023/01/21 14:52

投稿

退会済みユーザー
test CHANGED
@@ -1,5 +1,5 @@
1
1
  > jsonからデータを取り出していますが、文字列を保存して配列にするつもりです。
2
- この部分が、
2
+ この部分が、仮に、寝tgとワーク経由で json を取得するのではなく
3
3
  「https://raw.githubusercontent.com/monperrus/crawler-user-agents/master/crawler-user-agents.json のデータから pattern を抜きだしてソースコード中に直接記述する」
4
4
  という意味ならば、下記のような案が考えられます。
5
5
 

5

 

2023/01/21 14:52

投稿

退会済みユーザー
test CHANGED
@@ -10,7 +10,7 @@
10
10
  ```
11
11
  このようにループ中で正規表現オブジェクトを都度生成するのは、わずかながら遅くなる原因になると思います。
12
12
 
13
- したがって、この部分はあらかじめ**正規表現リテラルの配列**を記述し、forループをなくし、
13
+ したがって、この部分はforループをなくしてあらかじめ**正規表現リテラルの配列**を記述し、
14
14
  ```js
15
15
  if (/pattern1/.test(UserAgent) ||
16
16
  /pattern2/.test(UserAgent) ||

4

 

2023/01/21 14:51

投稿

退会済みユーザー
test CHANGED
@@ -26,3 +26,4 @@
26
26
  ```
27
27
  としてみてはいかがでしょうか。
28
28
  ~~(書くのが面倒なのは高速化の対価)~~
29
+ (ロード時のコンパイル時間との兼ね合いかもしれない)

3

 

2023/01/21 14:50

投稿

退会済みユーザー
test CHANGED
@@ -10,12 +10,14 @@
10
10
  ```
11
11
  このようにループ中で正規表現オブジェクトを都度生成するのは、わずかながら遅くなる原因になると思います。
12
12
 
13
- したがって、この部分はあらかじめ**正規表現リテラルの配列**を記述し
13
+ したがって、この部分はあらかじめ**正規表現リテラルの配列**を記述し、forループをなくし、
14
14
  ```js
15
15
  if (/pattern1/.test(UserAgent) ||
16
16
  /pattern2/.test(UserAgent) ||
17
17
  /pattern3/.test(UserAgent)
18
- ....
18
+ ....
19
+ ....
20
+ ....
19
21
  ) {
20
22
  result = true;
21
23
  break;
@@ -23,4 +25,4 @@
23
25
  }
24
26
  ```
25
27
  としてみてはいかがでしょうか。
26
-
28
+ ~~(書くのが面倒なのは高速化の対価)~~

2

修正

2023/01/21 14:48

投稿

退会済みユーザー
test CHANGED
@@ -10,14 +10,13 @@
10
10
  ```
11
11
  このようにループ中で正規表現オブジェクトを都度生成するのは、わずかながら遅くなる原因になると思います。
12
12
 
13
- したがって、この部分は
13
+ したがって、この部分はあらかじめ**正規表現リテラルの配列**を記述し
14
14
  ```js
15
- const patterns = [/bingbot/, /Slurp/, /[wW]get/, .....]
16
- ```
17
- というようにあらかじめ**正規表現リテラルの配列**を記述しておき、
18
- ```js
19
- for (i = 0; i < len; i = (i + 1) | 0) {
20
- if (patterns[i].test(UserAgent) == true) {
15
+ if (/pattern1/.test(UserAgent) ||
16
+ /pattern2/.test(UserAgent) ||
17
+ /pattern3/.test(UserAgent)
18
+ ....
19
+ ) {
21
20
  result = true;
22
21
  break;
23
22
  }

1

 

2023/01/21 14:44

投稿

退会済みユーザー
test CHANGED
@@ -5,11 +5,10 @@
5
5
 
6
6
  ---
7
7
 
8
-
9
8
  ```js
10
9
  new RegExp(data[i].pattern.replace(/\s+/g, ""));
11
10
  ```
12
- このようにループ中で正規表現オブジェクトを都度生成する部分が、わずかながら遅くなっている原因と思います。
11
+ このようにループ中で正規表現オブジェクトを都度生成するのは、わずかながら遅くなる原因になると思います。
13
12
 
14
13
  したがって、この部分は
15
14
  ```js