阻止Perl XS模块无声地回退到纯perl

前端之家收集整理的这篇文章主要介绍了阻止Perl XS模块无声地回退到纯perl前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
似乎CPAN上的一些(很多?)模块部分使用XS在C中实现,并且如果需要可以回退到纯perl实现.虽然这很聪明,但它显然会损害性能,我想知道它发生了所以我可以解决问题.

是否有停止或检测此类后备的一般方法

有关此行为的示例,请查看(非常方便)@L_301_0@(code snippet)

解决方法

任何解决方案都必须基于每个模块(因为决定使用哪个实现由父模块本身,而不是Perl中的某些机制).在您引用的情况下,在use语句之后检查$Date :: Simple :: NoXs的值将告诉您是否正在使用XS.
use Date::Simple;
die "not using XS for Date::Simple\n" if $Date::Simple::NoXs;

例如,要检测Scalar :: Util是否使用XS或纯Perl版本,您必须检查是否存在双变量函数.

use Scalar::Util;
die "not using XS for Scalar::Util\n" unless if @Scalar::Util::EXPORTFAIL;

猜你在找的Perl相关文章