回答編集履歴
9
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
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
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
> jsonからデータを取り出していますが、文字列を保存して配列にするつもりです。
|
2
|
-
この部分が、仮に、
|
2
|
+
この部分が、仮に、ネットワーク経由で json を取得するのではなく
|
3
3
|
「https://raw.githubusercontent.com/monperrus/crawler-user-agents/master/crawler-user-agents.json のデータから pattern を抜きだしてソースコード中に直接記述する」
|
4
4
|
という意味ならば、下記のような案が考えられます。
|
5
5
|
|
6
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
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
```
|
11
11
|
このようにループ中で正規表現オブジェクトを都度生成するのは、わずかながら遅くなる原因になると思います。
|
12
12
|
|
13
|
-
したがって、この部分はあらかじめ**正規表現リテラルの配列**を記述し、
|
13
|
+
したがって、この部分はforループをなくしてあらかじめ**正規表現リテラルの配列**を記述し、
|
14
14
|
```js
|
15
15
|
if (/pattern1/.test(UserAgent) ||
|
16
16
|
/pattern2/.test(UserAgent) ||
|
4
test
CHANGED
@@ -26,3 +26,4 @@
|
|
26
26
|
```
|
27
27
|
としてみてはいかがでしょうか。
|
28
28
|
~~(書くのが面倒なのは高速化の対価)~~
|
29
|
+
(ロード時のコンパイル時間との兼ね合いかもしれない)
|
3
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
修正
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 (pattern
|
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
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
|