Perl Inline :: C默认标志

厄瓜多尔

我使用Inline :: C制作了一个模块,并且注意到在主机MacOS和来宾Linux VM上运行该模块之间存在一些意外的性能差异。研究它,是由于默认的C编译器标志不同。在MacOS上,它们似乎是:

-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -O3   -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\"

与Centos 7相比:

 -fPIC -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -O2   -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\"

我的代码的主要区别是O3 vs O2,因此我研究了Inline文档并使用了:

use Inline (C => Config => ccflags => '-O3');

要明确指定-O3好吧,结果就是这样-O3 -O2应用的,因此指定ccflag不会覆盖默认值,它只会在默认值之前添加,最终不会产生任何效果。任何关于默认值的来源和/或如何覆盖它以指定所需的优化级别的想法。

斯蒂维布

似乎添加optimize配置选项可以完成您想要的操作。这是一个非常简短的示例,其中包含添加之前optimize => '-O3'和之后的输出

use warnings;
use strict;

use Inline 'C';

use Inline C => 'Config',
    build_noisy => 1,
    force_build => 1,
    optimize => '-O3',
;

print add(5, 6);

__END__
__C__

int add (int x, int y){
    return(x + y);
}

这是输出(为简洁起见,略):

之前:

cc -c -I"/home/steve/scratch/inline" -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2

后:

cc -c -I"/home/steve/scratch/inline" -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O3

...在Linux Mint 18.3上。

默认值来自$Config{optimize}perl在系统上编译/构建时,该值存储为只读默认值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

运行Inline :: C时出错

来自分类Dev

When is the "inline" keyword effective in C?

来自分类Dev

Inline function blocks in C#

来自分类Dev

Perl中<>的默认文件源

来自分类Dev

在Perl中访问默认目录

来自分类Dev

Perl6可选功能标志

来自分类Dev

perl命令行参数-MIO标志

来自分类Dev

如何从C ++调用perl?

来自分类Dev

在ghci中导入inline-c模块

来自分类Dev

Inline lambda function creation behaviour in C#

来自分类常见问题

HTML元素默认显示为:inline-block?

来自分类Dev

默认显示为:inline-block?的HTML元素?

来自分类Dev

默认的“ perl”打印目标是什么?

来自分类Dev

我想更改我的默认Perl

来自分类Dev

Perl RE匹配:如何为RE标志使用变量?

来自分类Dev

关于unpack()和printf()中的v标志的Perl问题

来自分类Dev

Perl -M标志,未初始化的值?

来自分类Dev

如何在 Perl 中制作动画加载标志?

来自分类Dev

inline-c和language-c-inline有什么区别?

来自分类Dev

python argparse:默认标志

来自分类Dev

C程序的perl匹配功能

来自分类Dev

perl regex比c ++ / boost更快

来自分类Dev

公司标志字段的默认标志位置

来自分类Dev

inline-c:“在外部通话中无法整理“类型”。”

来自分类Dev

“ inline”关键字何时在C中有效?

来自分类Dev

C ++ inline关键字和编译器优化

来自分类Dev

为什么inline关键字在C ++中存在?

来自分类Dev

C什么是函数说明符?就像_inline _NORETURN

来自分类Dev

在C / C ++中替换Perl的哈希变量