回答編集履歴

2

データベース絡みの記述を調整

2018/03/18 00:52

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,6 +1,6 @@
1
1
  結論としては、スクリプト言語にそんなに期待しないで下さい。
2
2
 
3
- どんなに得意な処理をねじ込んでも所詮ネイティブの1/10とか1/20とかそんなもんです。
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
- なので今回、誤った認識で評価を下す前に質問したのはGJといえるでしょう。
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倍度アップ](http://d.hatena.ne.jp/hnw/20141207)であり、速い言語になりした
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
- 確かにNode.jsPythonはデータベースの接続等でPHPよ有利です。
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
- つまり、MySQLなどのデータベースへの接続も1アクセス承認〜接続〜開放という手順を踏む事にります。
137
+ アクセスの度コネクションが途切れるというわけではいようでが、Node.jsの速度面の設計と比較すると少々貧弱?といった印象ですかね
132
138
 
133
139
 
134
140
 
135
- MySQLは1つコネクション複数のSQLを受け付け、複数の結果を返す挙動をします。
141
+ Node.jsように並列処理でSQLをどんどん発行しまくって、
136
142
 
137
- で、Node.jsやPythonMySQLに対して複数のコネクションを同時に張っておき、
143
+ 全て揃ったらレスポンスHTMLを生成するというり方はPHPで真似出来ません。
138
144
 
145
+ 使い方にも寄るものの、Node.jsの方がPHPより速いと思われます。
146
+
147
+
148
+
149
+ Pythonに関してはノータッチですのでよく分かりません。
150
+
151
+ もちろんプロセスを閉じない限りコネクションは張りっぱなしなので、
152
+
139
- アクセスがきたら手待ちのコネクションを使ってSQLを発行するという戦術が使えます。
153
+ 持続的接続は可能であり、PHPに比べて劣ってるという事はないと思います。
140
154
 
141
155
 
142
156
 

1

文章校正

2018/03/18 00:52

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -8,17 +8,15 @@
8
8
 
9
9
 
10
10
 
11
- 質問者さんのイメージは聞きかじった噂でかありせん
11
+ Node.jsが速い・PHP遅いと良く聞きますし、大まには私も同意しま
12
12
 
13
- まぁNode.jsが速いPHPは遅いというは良く表現されますし、全体的は私もそう思ってま
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
- シングルスレッドでありがらC10K問題に対応したがNode.jsです。
43
+ なのでサーバ用途としてはスクリプト言語随一という速度を誇ります。
46
44
 
47
45
 
48
46
 
49
- つまり、同期的な処理(for文やconsole.log)の速度自体は大したことありません。
47
+ 同期的な処理(for文やconsole.log)の速度自体は大したことありません。
50
48
 
51
- ただし、度重なるブラウザ戦争等でJITコンパイラが強ており
49
+ JITコンパイラの最適を上手く利用すばfor文は加速するのでネイティブ言語に迫れると思いますけど
52
50
 
51
+ console.logは高コストと聞いたことありますね。
52
+
53
+
54
+
53
- 複雑関数等実行の度強化され、JITコンパイラを活かすようなコード組み方をしてくとネイティブの言語に多少迫れるしょう
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
- メモリのキャッシュヒット率にまでテコが入っており、状況によらず全てのコードが2倍以上に速度向上を果たしています。
71
+ メモリのキャッシュヒット率にまでテコが入っており、全てのコードが2倍以上に速度向上を果たしています。
68
72
 
69
73
 
70
74
 
@@ -74,7 +78,7 @@
74
78
 
75
79
  アクセスが来ると対象のindex.phpなりを読み込ませてその時点で初めて実行を開始します。
76
80
 
77
- (Nginx+FastCGI等を利用しても、C言語の低速スレッドに依存してApacheからの移行に成功しただけで、設計思想的な変更は殆どありません。)
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
- まぁ、Node.jsは所詮スクリト言語ので複雑な処理させればボロが出ます。
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/)を使ってみてください。