迅速にmysqlのため、オープンを選択し、データの一般的な出力がどうなるか疑問に思う:パフォーマンスが向上しました... exec(C++)またはストレートPHP?
A)C++コードをコンパイルし、(execを介して呼び出されている)(または同等のもの)
または
B)ストレートPHPコード。
すべてのコードがC++とPHPの両方で等しくコード化されているとします。
は、テストをした: これはC++
Document Length: 100000 bytes
Concurrency Level: 2
Time taken for tests: 0.139 seconds
Complete requests: 10
Failed requests: 0
Write errors: 0
Total transferred: 1001550 bytes
HTML transferred: 1000000 bytes
Requests per second: 71.76 [#/sec] (mean)
Time per request: 27.872 [ms] (mean)
Time per request: 13.936 [ms] (mean, across all concurrent requests)
Transfer rate: 7018.29 [Kbytes/sec] received
これはPHPである:ここでは
Concurrency Level: 2
Time taken for tests: 4.115 seconds
Complete requests: 10
Failed requests: 0
Write errors: 0
Total transferred: 1001550 bytes
HTML transferred: 1000000 bytes
Requests per second: 2.43 [#/sec] (mean)
Time per request: 822.924 [ms] (mean)
Time per request: 411.462 [ms] (mean, across all concurrent requests)
Transfer rate: 237.71 [Kbytes/sec] received
はプログラムがある(私はかどうかを確認したかった-JUST MySQLのコードが含まれていませんでした基本コードではスタックの作成が速くなりました)。
C++
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
stringstream x;
//string x;
for (int i = 0; i < 100000; ++i)
{
x << "X";
}
cout << x.str();
return 0;
}
ここではPHPです:
for ($i=0; $i<100000; ++$i)
{
$x = $x . "X";
}
echo $x;
stringsteamを使用して、その公正テスト場合...考えを知っていますか?私の考えは、C++は新しいスタックインスタンスとmysql接続に関係なく高速化する予定です。
編集:これでテスト
:まだ速く
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
//stringstream x;
string x;
for (int i = 0; i < 100000; ++i)
{
x = x + "X";
}
cout << x;
return 0;
}
と、!
Concurrency Level: 2
Time taken for tests: 0.115 seconds
Complete requests: 10
Failed requests: 0
Write errors: 0
Total transferred: 1740 bytes
HTML transferred: 0 bytes
Requests per second: 86.98 [#/sec] (mean)
Time per request: 22.994 [ms] (mean)
Time per request: 11.497 [ms] (mean, across all concurrent requests)
Transfer rate: 14.78 [Kbytes/sec] received
編集:ここでは
はあなたが読み取りの数百を処理している場合を除き/秒あたりの書き込みをC++ファイル
<?php
echo exec("./test");
まあ、両方と時間/プロファイルを試してみませんか? – Xeo
PHPセッションに関連付けられたDB接続ハンドルを維持することは直感的です.PHARでは、PEAR :: MDB2のような接続レイヤーを使用してより即時にアクセスすることができます。 – darvids0n
perlで同様のことをしたプログラムを扱ったので、完全にネイティブな実装(Pythonで)に切り替えると、実行時間が10分から1分に短縮されたことが分かります。比較のために、我々は〜300のシェル呼び出しを行っていました。 – debracey