3

我已将 MATLAB .m 文件转换为 exe 文件并从 php 调用它。但是执行时间非常慢。所以,现在我正在考虑将matlab文件转换为C。

我可以从 PHP 扩展调用转换后的 C 文件吗?

我是否需要先将 matlab 程序转换为 C,然后从 php 扩展名中调用它,或者我应该在 PHP 本身中转换 C 中的 matlab 程序?

执行时间会比以前更快还是相同?

4

2 回答 2

1

您可能会获得一些基准来帮助选择要采用的路径。您可以手动执行 matlab 和 exe 文件吗?如果是这样,他们需要多长时间才能执行?

我认为你有三个选择:

1)无论matlab文件在做什么,用PHP重写它。执行 php 并与上面的基准进行比较。

2)研究你用来执行matlab exe文件的机制,看看它是否可以简化......你在使用exec()吗?

3) 将 matlab 文件转换并编译为 C 并使用 exec() 机制,如果适用于您的平台(Windows?)并与上述基准进行比较。你能描述一下它目前是如何执行的吗?

希望这可以帮助!

于 2013-04-16T03:48:50.710 回答
0

如果转换后的 C 文件有函数或类作为接口,则可以将其包装到 php 扩展中并从 php.ini 中调用。

假设您有一个包含以下代码的 C 文件:

int functionA(int p1,int p2);
int functionB(char p3,double p4);

你应该把它编译成静态或动态库,例如 example.so 或 example.a 然后你应该开始编写 php 扩展,参见php extension hello world。在您的扩展中,您将调用 example.so 或 example.a 提供的函数,然后提供到 php 命名空间的接口。

做完这一切,就可以在php中间接调用functionA和functionB了。我向你保证,在 C 中执行的代码将比在 matlab 或 php 本身中快得多。

于 2015-08-04T13:13:01.053 回答