你什么时候应该使用XS?

时间:2011-07-13 19:17:24

标签: perl perl-xs

我正在撰写关于XS的演讲,我需要知道社区什么时候认为适合XS。

2 个答案:

答案 0 :(得分:10)

我至少可以想到使用XS的三个理由:

  1. 您有一个要在Perl 5中访问的C库
  2. 你有一段代码可以让你的程序变慢,如果用C语言写的话会更快
  3. 您需要访问仅在XS中提供的内容
  4. 原因1很明显,不需要解释。

    当你真的需要理由2时不太明显。通常,您最好先查看代码的结构。您应该只调用原因2,如果您有profiled your code并且benchmarktest suite来证明XS代码更快更正确。

    原因3是一个危险的原因。很少有人真的需要考虑Perl的胆量来做某事,但至少有one valid case

答案 1 :(得分:3)

在少数情况下,更好的内存管理是使用XS的另一个原因。例如,如果您有一个非常大的某些相似类型的对象块,则可以通过XS更有效地管理它。例如,KinoSearch将此标记用于标记,其中大字符串中的开始和结束偏移可以通过XS更有效地管理,而不是作为一个巨大的标量池。 PDL还有一个内存管理方面,以及速度。

有建议将这种方法的一部分长期整合到核心Perl中,最初是因为它提供了一个更好地在线程中共享数据的机会:参见:http://openparallel.com/2011/07/05/a-new-hope-for-efficient-safe-data-sharing-between-threads-in-perl/