回答編集履歴
2
データベース絡みの記述を調整
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
結論としては、スクリプト言語にそんなに期待しないで下さい。
|
2
2
|
|
3
|
-
|
3
|
+
ネイティブの1/10とか1/20とかそんなもんです。
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -16,13 +16,11 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
一つの機能だけ取り上げて、言語
|
19
|
+
一つの機能だけ取り上げて、言語自体の速度や有用性を語るのはナンセンスです。
|
20
|
-
|
21
|
-
またスクリプト言語の速度を元に優秀かそうでないかを判断するのも同じようにナンセンスです。
|
22
20
|
|
23
21
|
|
24
22
|
|
25
|
-
なので今回、
|
23
|
+
なので今回、断片的な情報を元に評価を下す前に質問したのはGJといえるでしょう。
|
26
24
|
|
27
25
|
次からは多角的に色々調べてみるようにしてください。
|
28
26
|
|
@@ -62,17 +60,17 @@
|
|
62
60
|
|
63
61
|
|
64
62
|
|
65
|
-
PHPは
|
63
|
+
PHPは単純な速度では遅い言語ではありません。
|
66
64
|
|
67
|
-
確かに4〜5の初期の時代は
|
65
|
+
確かに4〜5の初期の時代は処理速度も遅い言語として有名でしたが、
|
68
66
|
|
69
|
-
[5.0→7.0比で3倍
|
67
|
+
[5.0→7.0比で3倍速で動作する](http://d.hatena.ne.jp/hnw/20141207)ようになり、速い言語として認知されています。
|
70
68
|
|
71
69
|
メモリのキャッシュヒット率にまでテコが入っており、全てのコードが2倍以上に速度向上を果たしています。
|
72
70
|
|
73
71
|
|
74
72
|
|
75
|
-
それでもPHPが遅いと
|
73
|
+
それでもPHPが遅いと言われるのは、ステートレスで動作する設計だからです。
|
76
74
|
|
77
75
|
WebサーバのApacheは起動時にPHPのプロセスを4本なり8本なりを同時に起動しておき、
|
78
76
|
|
@@ -120,23 +118,39 @@
|
|
120
118
|
|
121
119
|
|
122
120
|
|
121
|
+
【修正済】
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
例えばNode.jsのmysqlライブラリでは[connection pool](https://github.com/mysqljs/mysql#pooling-connections)という機能が存在します。
|
126
|
+
|
127
|
+
予めMySQLとの接続を5本なり7本なり確保しておいて、
|
128
|
+
|
123
|
-
|
129
|
+
実行していないプロセスを使って通信するというやり方です。
|
124
130
|
|
125
131
|
|
126
132
|
|
127
133
|
PHPは1接続1プロセスという縦割りの作り方をしています。
|
128
134
|
|
129
|
-
|
135
|
+
[持続的接続](http://php.net/manual/ja/pdo.connections.php)という機能を使って、
|
130
136
|
|
131
|
-
|
137
|
+
アクセスの度にコネクションが途切れるというわけではないようですが、Node.jsの速度面の設計と比較すると少々貧弱?といった印象ですかね。
|
132
138
|
|
133
139
|
|
134
140
|
|
135
|
-
|
141
|
+
Node.jsのように並列処理でSQLをどんどん発行しまくって、
|
136
142
|
|
137
|
-
|
143
|
+
全て揃ったらレスポンスのHTMLを生成するというやり方はPHPでは真似出来ません。
|
138
144
|
|
145
|
+
使い方にも寄るものの、Node.jsの方がPHPより速いと思われます。
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
Pythonに関してはノータッチですのでよく分かりません。
|
150
|
+
|
151
|
+
もちろんプロセスを閉じない限りコネクションは張りっぱなしなので、
|
152
|
+
|
139
|
-
|
153
|
+
持続的接続は可能であり、PHPに比べて劣っているという事はないと思います。
|
140
154
|
|
141
155
|
|
142
156
|
|
1
文章校正
test
CHANGED
@@ -8,17 +8,15 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
|
11
|
+
Node.jsが速い・PHPは遅いと良く聞きますし、大まかには私も同意します。
|
12
12
|
|
13
|
-
|
13
|
+
でも、所詮噂であり、言語特性の一面に過ぎないわけですね。
|
14
14
|
|
15
|
-
|
15
|
+
つまり今回のようにfor文とprint文のみで評価すれば別の結果が得られます。
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
つまり今回のようにfor文とprint文のみで評価すれば別の結果が得られます。
|
20
|
-
|
21
|
-
|
19
|
+
一つの機能だけ取り上げて、言語やシステムの速度を語るのはナンセンスです。
|
22
20
|
|
23
21
|
またスクリプト言語の速度を元に優秀かそうでないかを判断するのも同じようにナンセンスです。
|
24
22
|
|
@@ -26,7 +24,7 @@
|
|
26
24
|
|
27
25
|
なので今回、誤った認識で評価を下す前に質問したのはGJといえるでしょう。
|
28
26
|
|
29
|
-
次からは多角的に色々調べて
|
27
|
+
次からは多角的に色々調べてみるようにしてください。
|
30
28
|
|
31
29
|
|
32
30
|
|
@@ -40,17 +38,23 @@
|
|
40
38
|
|
41
39
|
その理由は[libuv](https://github.com/libuv/libuv)というC++製のライブラリにあります。
|
42
40
|
|
43
|
-
コアの部分のイベントループの仕組みをC言語由来のライブラリでぶん回す事で
|
41
|
+
コアの部分のイベントループの仕組みをC言語由来のライブラリでぶん回す事で速度を稼ぎます。
|
44
42
|
|
45
|
-
|
43
|
+
なのでサーバ用途としてはスクリプト言語随一という速度を誇ります。
|
46
44
|
|
47
45
|
|
48
46
|
|
49
|
-
|
47
|
+
同期的な処理(for文やconsole.log)の速度自体は大したことありません。
|
50
48
|
|
51
|
-
|
49
|
+
JITコンパイラの最適化を上手く利用すればfor文は加速するのでネイティブ言語に迫れると思いますけど、
|
52
50
|
|
51
|
+
console.logは高コストと聞いたことありますね。
|
52
|
+
|
53
|
+
|
54
|
+
|
53
|
-
|
55
|
+
今回の不甲斐ない結果は主にconsole.logのせいです。
|
56
|
+
|
57
|
+
[stdout](http://tatsuyaoiw.com/2015/02/02/difference-between-console-log-and-process-stdout-write-in-node-js/)を使ってみてください。
|
54
58
|
|
55
59
|
|
56
60
|
|
@@ -60,11 +64,11 @@
|
|
60
64
|
|
61
65
|
PHPはそもそも単純な速度では遅い言語ではありません。
|
62
66
|
|
63
|
-
4〜5の初期は
|
67
|
+
確かに4〜5の初期の時代は愚鈍な言語として取り上げられていましたが、
|
64
68
|
|
65
|
-
[5.0→7.0比で3倍の速度アップ](http://d.hatena.ne.jp/hnw/20141207)であり、速い
|
69
|
+
[5.0→7.0比で3倍の速度アップ](http://d.hatena.ne.jp/hnw/20141207)であり、速い言語になりました。
|
66
70
|
|
67
|
-
メモリのキャッシュヒット率にまでテコが入っており、
|
71
|
+
メモリのキャッシュヒット率にまでテコが入っており、全てのコードが2倍以上に速度向上を果たしています。
|
68
72
|
|
69
73
|
|
70
74
|
|
@@ -74,7 +78,7 @@
|
|
74
78
|
|
75
79
|
アクセスが来ると対象のindex.phpなりを読み込ませてその時点で初めて実行を開始します。
|
76
80
|
|
77
|
-
(Nginx+FastCGI等を利用しても、C
|
81
|
+
(Nginx+FastCGI等を利用しても、C10Kに対応出来ない古臭いApacheから脱却出来ただけで、設計思想的な所では変わらず不利です)
|
78
82
|
|
79
83
|
|
80
84
|
|
@@ -116,6 +120,10 @@
|
|
116
120
|
|
117
121
|
|
118
122
|
|
123
|
+
確かにNode.jsやPythonはデータベースの接続等でPHPより有利です。
|
124
|
+
|
125
|
+
|
126
|
+
|
119
127
|
PHPは1接続1プロセスという縦割りの作り方をしています。
|
120
128
|
|
121
129
|
要するにアクセス間で変数や定数を持ち回す事が一切出来ません。
|
@@ -132,10 +140,6 @@
|
|
132
140
|
|
133
141
|
|
134
142
|
|
135
|
-
つまり、Node.jsやPythonは「1アクセス毎に承認〜接続〜開放」が無いのでその分有利です。
|
136
|
-
|
137
|
-
|
138
|
-
|
139
143
|
> websocketなどの導入が比較的簡単だと聞く
|
140
144
|
|
141
145
|
|
@@ -144,20 +148,6 @@
|
|
144
148
|
|
145
149
|
WebSocketサーバー等を作るのが非常に得意です。
|
146
150
|
|
147
|
-
また、持ち前のlibuvが活きるサーバとしての動作も得意な部類で、下手するとコンパイラ言語の域に達する程の処理速度がでます。
|
148
151
|
|
149
152
|
|
150
|
-
|
151
|
-
|
153
|
+
CommonJS譲りのシンプルな外部ライブラリ読み込みも小気味いい開発速度を誇ります。
|
152
|
-
|
153
|
-
速度が欲しいならGolang等の検討をおすすめします。
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
> また独学なので比較コードに不備がございましたらご指摘お願いいたします。
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
Node.jsはconsole.logが高コストですからね。
|
162
|
-
|
163
|
-
[stdout](http://tatsuyaoiw.com/2015/02/02/difference-between-console-log-and-process-stdout-write-in-node-js/)を使ってみてください。
|