我正在写一篇关于 XS 的演讲,我需要知道社区何时认为使用 XS 是合适的。
问问题
269 次
2 回答
10
我至少能想到三个使用 XS 的理由:
- 你有一个要在 Perl 5 中访问的 C 库
- 您有一段代码可以证明会减慢程序的速度,如果用 C 编写会更快
- 您需要访问仅在 XS 中可用的内容
原因 1 显而易见,无需解释。
当你真的需要理由 2 时就不那么明显了。通常,您最好查看代码的结构。如果您已经对代码进行了概要分析,并且有一个基准和测试套件来证明 XS 代码更快且正确,那么您应该只调用原因 2。
原因 3 是一个危险的原因。很少有你真正需要研究 Perl 的胆量来做某事,但至少有一个有效的案例。
于 2011-07-13T19:17:59.930 回答
3
在少数情况下,更好的内存管理是使用 XS 的另一个原因。例如,如果您有一些类似类型的非常大的对象块,则可以通过 XS 更有效地管理它。KinoSearch
将它用于标记,例如,通过 XS 可以更有效地管理大字符串中的开始和结束偏移,而不是作为一个巨大的标量池。PDL
它还具有内存管理方面以及速度。
有一些建议将这种方法中的一些长期集成到核心 Perl 中,最初是因为它提供了一个在线程中更好地共享数据的机会:请参阅: http: //openparallel.com/2011/07/05/a-new - 希望在 perl/ 线程之间实现高效安全数据共享。
于 2011-07-13T19:45:55.437 回答