想知道mysql打开,选择和数据的通用输出会更快:
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
以下是程序(我没有包含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进行公平的测试......想法?我的想法是,无论新的堆栈实例和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 + "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程序
<?php
echo exec("./test");
答案 0 :(得分:6)
让我们看看。让我们启动一个shell,传递一些参数,这会启动另一个应用程序,它会加载一系列.so库,然后连接到mysql,做东西,然后必须通过printf()返回一个潜在的巨大输出块或者等价,然后必须反馈给PHP,解析为纯文本,撕裂,然后变成某种连贯的结构。
这比在MySQL中进行查询并将数据直接导入PHP结构更快?
也许你应该测试一下......
答案 1 :(得分:0)
除非你每秒处理数百次读/写,否则差异很可能几乎可以忽略不计,如果存在的话。
答案 2 :(得分:0)
如果你在PHP扩展中修补你的compliled C ++代码,那么它是有意义的。但除非您使用C / C ++对结果数据进行重要计算,否则它并不比执行PHP脚本代码快。
如果您优化/非规范化数据库方案,或者异步使用查询,则更有可能看到性能提升(在脚本启动时发出mysql_query,执行其他操作,当mysqld服务器有几毫秒时只发出mysql_fetch_assoc准备结果集。)