开发者社区> 问答> 正文

在Java / PHP / Python框架内以编译的C / C ++代码运行算法?

有时,我遇到过涉及使用Java,PHP或Python创建应用程序框架或网站的编程技术,但是当需要复杂的算法时,请用C或C ++编写这些算法并在Java / PHP中将其作为类似于API的函数调用来运行/ Python代码。

我一直在谷歌搜索和搜索此内容,除非我不知道这种做法的名称,否则我似乎找不到任何东西。

简而言之,我该如何:

用C或C ++创建函数或类 将它们编译为DLL /二进制/某种形式 从-运行功能 爪哇 的PHP 蟒蛇 我怀疑必须在Java / PHP / Python和C / C ++函数之间创建JSON / XML之类的输出和输入,以便可以轻松桥接数据,但这没关系。 我只是不确定如何实现该技术,但是这似乎是一种非常聪明的方法,可以利用Java,PHP和Python的强大功能,同时将非常快速的编程语言用于大型,复杂的任务。

我想到的另一个想法是,如果我仅使用Java / PHP / Python中的文字来创建函数,它的运行速度是否与C差不多?

我要在C / C ++上使用的特定任务是大型循环,ping数据库和分析地图。到目前为止,还没有任何工作开始,这全是理论。

展开
收起
祖安文状元 2020-02-23 16:28:15 1757 0
2 条回答
写回答
取消 提交回答
  • Java中使用C/C++,很大程度上是为了提高性能。建议看看JNI NDK相关开发。 https://www.cnblogs.com/ljxt/p/11612914.html

    2020-03-14 14:09:08
    赞同 展开评论 打赏
  • 您可以使用Boost.Python轻松地使用自定义C ++代码扩展python脚本,有关更多详细信息,请访问此网站:http : //www.boost.org/doc/libs/1_50_0/libs/python/doc/

    这是您可以使用的方式:

    char const* greet()
    {
       return "hello, world";
    }
    
    #include <boost/python.hpp>
    
    BOOST_PYTHON_MODULE(hello_ext)
    {
        using namespace boost::python;
        def("greet", greet);
    }
    
    

    您需要将此编译为共享库。您将在Windows上获得.dll,在Linux上获得.so。该库将包含必要的代码以使其可用于python。使用示例:

    >>> import hello_ext
    >>> print hello_ext.greet()
    hello, world
    
    

    以下是更多示例:http : //www.boost.org/doc/libs/1_50_0/libs/python/doc/tutorial/doc/html/index.html

    使用Boost.Python时,如果不使用弱动态链接,请记住将共享对象链接到python。PHP和Java也有类似的东西。

    至于其他语言,我从未在Java中使用自定义共享库,而在PHP中使用了它,而使用本机Api则很麻烦。我发现用swig方式更愉快。

    2020-02-23 16:28:33
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载