Compile
Compile[{x1,x2,…},expr]
创建一个经过编译的函数,已知 xi 的数值对 expr 求值.
Compile[{{x1,t1},…},expr]
假定 xi 的类型与 ti 匹配.
Compile[{{x1,t1,n1},…},expr]
假定 xi 是秩为 ni 的对象数组,每个对象的类型都与 ti 匹配.
Compile[vars,expr,{{p1,pt1},…}]
假定 expr 中匹配 pi 的子表达式的类型与 pti 匹配.
更多信息和选项
- 由 Compile 处理的类型是:
-
_Integer 机器整数 _Real 机器精度的近似实数(缺省) _Complex 机器精度近似复数 True False 逻辑变量 - 作为经过编译的函数的输入给出的嵌套列表必须是全数值数组.
- Compile 处理数值函数、矩阵运算、程序式编程结构、列表操作函数以及函数式编程结构等等.
- Compile 生成 CompiledFunction 对象.
- 经过编译的代码处理数值精度和局部变量的方式与普通的 Wolfram 语言代码不同.
- 如果不能用经过编译的代码对有特殊参数的经过编译的函数求值,则使用普通的 Wolfram 语言代码代替.
- 普通 Wolfram 语言代码可以从经过编译的代码内部调用. 由 Wolfram 语言代码获得的结果假设是近似实数除非特别指明,否则由 Compile 的第三个参数指定.
- 用 Compile 计算的对象的次数和次序可能和普通的 Wolfram 语言代码不同.
- Compile 有属性 HoldAll,在默认情况下在编译前并不进行计算.
- 可以使用 Compile[…,Evaluate[expr]] 指定 expr 应当在编译前进行符号性计算.
- 可以给出下列选项:
-
CompilationOptions Automatic 编译过程的选项 CompilationTarget $CompilationTarget 代码产生的目标运行时间 Parallelization Automatic 经过编译的函数执行的并行控制 RuntimeAttributes {} 经过编译的函数的计算属性 RuntimeOptions Automatic 经过编译的函数的运行时间选项
范例
打开所有单元关闭所有单元基本范例 (1)
选项 (9)
CompilationOptions (1)
通过避免计算同样的结果超过一次,Automatic 的默认设置产生效率更高的代码:
Parallelization (2)
RuntimeAttributes (3)
如果存在一个分支,可列表性(listability)需要定义一个函数,如下所示,使用 Function:
使用可列表属性通常比多次调用 CompiledFunction 更快:
可能存在的问题 (1)
文本
Wolfram Research (1991),Compile,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Compile.html (更新于 2010 年).
CMS
Wolfram 语言. 1991. "Compile." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2010. https://reference.wolfram.com/language/ref/Compile.html.
APA
Wolfram 语言. (1991). Compile. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Compile.html 年