[英]Performance wise… exec(c++) or straight PHP?
想知道什么是更快的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");
讓我們來看看。 讓我們啟動一個shell,傳遞一些參數,然后啟動另一個應用程序,該應用程序加載一系列.so庫,然后THEN連接到mysql,執行操作,然后必須通過printf()或返回一個潛在的龐大輸出等價物,然后必須將其反饋給PHP,將其解析為純文本,將其撕裂,然后轉變為某種連貫的結構。
這比在MySQL中進行查詢並將數據直接放入PHP結構要快嗎?
也許你應該測試一下...
除非您每秒處理數百次讀/寫,否則差異很可能幾乎可以忽略不計。
如果您將符合標准的C ++代碼作為PHP擴展進行修補,則可以。 但是,除非您使用C / C ++對結果數據進行大量計算,否則這不會比將其作為PHP腳本代碼執行快。
如果您改為優化/非規范化數據庫方案,或者異步使用查詢(在腳本開始時發出mysql_query,執行其他操作,並且只有mysql_fetch_assoc,而mysqld服務器只有幾毫秒的時間來准備),則您更有可能看到性能提高。結果集)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.