php - 性能方面... exec(c++) 还是直接 PHP?

标签 php c++ performance

想知道 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 库,然后连接到 mysql,执行操作,然后必须通过 printf() 返回可能巨大的输出 block 或等价的,然后必须反馈给 PHP,解析为纯文本,分解,然后变成某种连贯的结构。

这会比在 MySQL 中执行查询并将数据直接获取到 PHP 结构更快吗?

也许你应该测试一下...

关于php - 性能方面... exec(c++) 还是直接 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944210/

相关文章:

vba - 加快 VBA 代码运行速度

c++ - 如何快速找到 vector 和的最大元素?

php - 如何让我的 OpenCart 客户在一段时间不活动后注销?

php - mysql更新多行中的多列

c++ - 保持对同一实例 C++ 的引用

c++ - 如何更改 map 的第二个组件?

performance - Kendo UI - 缩小的 JS 大小为 1.8MB

php - 如何在 Phalcon 中设置 404 页面

php - Phing 中的数组属性

java - 查找给定输入的数据类型