FunctionCompile

FunctionCompile[f]

根据纯函数生成编译好的代码函数.

FunctionCompile[{f1,f2,}]

根据一系列纯函数生成一系列编译好的代码函数.

FunctionCompile[k1f1,k2f2,]

根据 Wolfram 语言函数关联生成已编译的代码函数关联.

FunctionCompile[defs,fspec]

使用本地辅助定义 defs.

更多信息和选项

范例

打开所有单元关闭所有单元

基本范例  (5)

Function 编译成编译代码函数:

CompiledCodeFunction 计算带有正确类型的参数:

如果给出了意外的参数,则会产生错误:

编译代码支持许多常见操作:

Information 可以提取 CompiledCodeFunction 签名:

可用 FunctionCompile 编译多个函数:

用关联来保存函数会很有用:

可用 FunctionDeclaration 给出辅助定义:

可使用 TypeDeclaration 来添加新类型:

编译一个可实例化类型的函数,然后提取字段:

FunctionCompile 将根据编译器环境中的声明名称创建一个函数:

范围  (11)

支持更宽范围的自然类型:

也支持复合类型:

也支持函数类型:

传递函数和整数参数执行所需的计算:

可以使用 KernelFunction 调用 Wolfram Engine. 以下定义 Wolfram Engine 中的函数:

使用 KernelFunction 从编译代码中调用用户定义的函数:

函数可以作为数据传递:

第一个参数选择使用的嵌套函数:

嵌套函数可以引用外部作用域中的变量:

引用外部作用域中的变量的嵌套函数可用作函数参数:

Print 可用于查看计算内部:

CompiledCodeFunction 可作为参数传递给其他 CompiledCodeFunction 表达式.

定义函数:

该函数把函数作为参数:

这将第一个函数作为参数传递给第二个函数:

应用使用 := 为其声明设置 DownValues 的函数:

FunctionDeclaration 为函数提供名称和类型,并声明该执行来自 DownValues

现在编译使用此声明的函数:

CompiledCodeFunction 包含允许在相同架构的机器上进行序列化和反序列化的低级代码:

选项  (6)

CompilerEnvironment  (1)

创建编译环境并添加函数定义:

在编译中使用编译环境:

CompilerRuntimeErrorAction  (1)

执行底层代码时的错误行为受 CompilerRuntimeErrorAction 控制:

如果出现错误,函数将在评估器中重新运行:

如果函数包含编译器特定代码,则不会在评估器中重新运行:

如果设置为 "Evaluate",则总是在评估器中重新运行:

如果设置为 None,则评估器中永远不会重新运行:

可以给出一个函数来获取自定义行为:

ProgressReporting  (1)

报告编译期间的进展情况:

可以通过将 ProgressReporting 选项设置为 False 来禁止该功能.

ProgressReporting 的默认值是 Automatic,即使用全局设置 $ProgressReporting. 如果设置为 False,则不会进行进度报告.

TargetSystem  (2)

创建一个编译好的代码函数,该函数可以在当前架构之外的机器架构上运行:

创建一个可以在所有可能的机器架构平台上运行的编译好的代码函数:

可将编译后的代码函数迁移到具有 $SystemID 设置的机器上,并且无需对原始代码重新进行编译即可运行.

请注意,CreateCompilerEnvironment 可用于生成多个目标系统,这可以减少交叉编译的时间.

UseEmbeddedLibrary  (1)

创建一个 CompiledCodeFunction,为当前平台嵌入一个共享库:

代码函数现在包含一个嵌入库:

从文件加载代码函数时将使用该库. 这使得加载更快:

恢复的代码函数按预期正常工作:

可能存在的问题  (4)

Errors  (3)

如果在使用底层代码计算函数时出现错误,如果避免使用编译器特定代码,计算将在 Wolfram 引擎中运行:

没有错误:

运行该函数时出错. 计算终止,发出消息并使用 Wolfram Engine 计算结果:

整数常量被输入为本机整数:

使用 Typed 指定特殊的类型:

不支持从 CompiledCodeFunction 返回函数:

嵌套在 CompiledCodeFunction 内部的函数可以返回函数:

Creating Functions  (1)

如果有一个以上的声明,FunctionCompile 就无法创建函数:

若使用 Typed,则可使用编译:

如果有一个多态声明,则 FunctionCompile 无法创建函数:

若使用 Typed,则可用编译:

巧妙范例  (2)

嵌套函数可用于实现递归定义:

如果声明被多次使用,则使用符号声明的声明可派上用场:

引用符号的 FunctionDeclaration

使用符号的函数:

编译后的函数代码:

基于创建的数据的矢量图:

编译后的版本要快得多:

输出动画:

Wolfram Research (2019),FunctionCompile,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FunctionCompile.html (更新于 2021 年).

文本

Wolfram Research (2019),FunctionCompile,Wolfram 语言函数,https://reference.wolfram.com/language/ref/FunctionCompile.html (更新于 2021 年).

CMS

Wolfram 语言. 2019. "FunctionCompile." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/FunctionCompile.html.

APA

Wolfram 语言. (2019). FunctionCompile. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/FunctionCompile.html 年

BibTeX

@misc{reference.wolfram_2024_functioncompile, author="Wolfram Research", title="{FunctionCompile}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/FunctionCompile.html}", note=[Accessed: 20-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_functioncompile, organization={Wolfram Research}, title={FunctionCompile}, year={2021}, url={https://reference.wolfram.com/language/ref/FunctionCompile.html}, note=[Accessed: 20-November-2024 ]}