从Perl代码调用C ++程序

时间:2015-02-03 07:12:16

标签: c++ perl xs

我编写了一个调用子模块数百万次的perl代码。子模块是计算密集型的,其运行时非常慢。我发现一个C ++程序完全执行子模块的工作,我想用C ++程序替换子模块。 我想知道是否必须编写XS代码来连接程序。使用"系统"直接调用C ++程序会降低性能吗? perl代码中的命令? 谢谢!

1 个答案:

答案 0 :(得分:1)

启动外部程序总是比进行函数调用慢。如果你关心速度,启动一个“数千万次”的程序是不可能的。

如果执行了数千万次的循环在外部程序中,那么只启动它一次是可以接受的。但是,您现在还有另一个问题:如何向外部程序获取数千万个数据以及如何获得结果。因为它是一个外部程序,所以你必须以文本形式传递数据。这意味着您的脚本必须将数据转换为文本,并将其传递给外部程序;外部程序必须解析它并将其转换为其本机表示,执行计算,将结果转换为文本并返回它;然后你的脚本必须解析结果。

无论如何,

system可能不是正确的工具。它最适合运行程序的效果(例如rm -rf /)而不是它们的输出。如果你想阅读程序的输出,你可能需要反引号(``又名qx{})或管道给自己(参见open()中的“使用perldoc perlipc for IPC” )。