加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 22:02:56 所属栏目:大数据 来源:网络整理
导读:似乎CPAN上的一些(很多?)模块部分使用XS在C中实现,并且如果需要可以回退到纯perl实现.虽然这很聪明,但它显然会损害性能,我想知道它发生了所以我可以解决问题. 是否有停止或检测此类后备的一般方法? 有关此行为的示例,请查看(非常方便)Date::Simple(code sn
似乎CPAN上的一些(很多?)模块部分使用XS在C中实现,并且如果需要可以回退到纯perl实现.虽然这很聪明,但它显然会损害性能,我想知道它发生了所以我可以解决问题.

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

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读