簡體   English   中英

性能明智的…exec(c ++)還是直接的PHP?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM