gpt4 book ai didi

perl - 阻止 Perl XS 模块默默地退回到纯 perl

转载 作者:行者123 更新时间:2023-12-04 13:44:37 27 4
gpt4 key购买 nike

似乎 CPAN 上的一些(很多?)模块部分是使用 XS 在 C 中实现的,如果需要,可以回退到纯 perl 实现。虽然这很聪明,但它显然会损害性能,我想知道它是否会发生,以便我可以解决问题。

有没有一种通用的方法来停止或检测这种类型的回退?

有关此行为的示例,请查看(非常方便)Date::Simple (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 版本,您必须检查 dualvar 函数是否存在。
use Scalar::Util;
die "not using XS for Scalar::Util\n" unless if @Scalar::Util::EXPORTFAIL;

关于perl - 阻止 Perl XS 模块默默地退回到纯 perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3659587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com