交互式实用程序
该 交互式活动 模块提供了用于交互使用Julia的实用程序,例如代码内省和剪贴板访问。 它用于交互式工作,并自动加载在 互动模式。
# *`基地。文件。[医]apropos`*-函数
apropos([io::IO=stdout], pattern::Union{AbstractString,Regex})
搜索包含以下条目的可用文档 模式.
何时 模式 是一个字符串,大小写被忽略。 结果打印到 伊俄.
阿普洛斯 可以通过用双引号包装查询从REPL中的帮助模式调用:
help?> "pattern"
# *`InteractiveUtils.varinfo的`*-函数
varinfo(m::Module=Main, pattern::Regex=r""; all=false, imported=false, recursive=false, sortby::Symbol=:name, minsize::Int=0)
返回一个markdown表,提供有关模块中公共全局变量的信息,可选地仅限于匹配的变量 模式.
内存消耗估计值是对象内部结构大小的近似下限。
* 全部 :还列出模块中定义的非公共对象、已弃用的对象和编译器生成的对象。
* 进口 :还列出从其他模块显式导入的对象。
* 递归 :递归地在子模块中包含对象,在每个子模块中观察相同的设置。
* 索特比 :排序结果的列。 选项是 :姓名 (默认), :尺寸,而 :摘要.
* 小型化 :仅包括大小至少为 小型化 字节。 默认值为 0.
的输出 varinfo的 仅用于显示目的。 请参阅 姓名获取在模块中定义的符号数组,该数组适用于更一般的操作。
# *`InteractiveUtils.编辑`*-Method
edit(path::AbstractString, line::Integer=0, column::Integer=0)
编辑文件或目录可选地提供行号以编辑文件。 返回 朱莉娅 退出编辑器时提示。 编辑器可以通过设置来更改 朱莉亚*编辑, 视觉效果 或 编辑 作为环境变量。
|
兼容性
朱莉娅1.9 |
# *`InteractiveUtils.编辑`*-Method
edit(function, [types])
edit(module)
编辑函数的定义,可选地指定类型元组以指示要编辑的方法。 对于模块,打开主源文件。 模块需要加载 使用 或 进口 首先。
|
兼容性
朱莉娅1.1 |
为了确保文件可以在给定行打开,您可能需要调用 InteractiveUtils.辩护律师 首先。
# *`InteractiveUtils.辩护律师`*-函数
define_editor(fn, pattern; wait=false)
定义新的编辑器匹配 模式 它可以用来打开一个文件(可能在一个给定的行号),使用 fn的.
该 fn的 参数是一个函数,它决定如何使用给定的编辑器打开文件。 它应该有四个参数,如下所示:
* cmd公司 -编辑器的基本命令对象
* 路径 -打开源文件的路径
* 行 -打开编辑器的行号
* 专栏 -打开编辑器的列号
无法使用命令或特定列打开特定行的编辑器可能会忽略 行 和/或 专栏 争论。 该 fn的 回调必须返回一个适当的 Cmd公司 打开文件或 什么都没有 以表示他们无法编辑此文件。 使用方法 什么都没有 指示此编辑器不适用于当前环境,应尝试使用另一个编辑器。 通过将回调直接推送到向量,可以添加不需要生成外部命令的更通用的编辑挂钩 编辑_回调.
该 模式 参数是字符串、正则表达式或字符串和正则表达式的数组。 为 fn的 要被调用,其中一个模式必须与 编辑, 视觉效果 或 朱莉亚*编辑. 对于字符串,字符串必须等于 基本名称编辑器命令的第一个单词,其扩展名(如果有的话)被删除。 例如,"vi"不匹配"vim-g",但匹配"/usr/bin/vi-m";它也匹配 vi.exe. 如果 模式 是一个正则表达式,它作为shell转义的字符串与所有编辑器命令匹配。 如果数组模式的任何项匹配,则数组模式匹配。 如果多个编辑器匹配,则使用最近添加的编辑器。
默认情况下,julia不会等待编辑器关闭,而是在后台运行它。 但是,如果编辑器是基于终端的,您可能需要设置 等待=真 而julia会等待编辑关闭后再恢复。
如果设置了一个编辑器环境变量,但没有编辑器条目与之匹配,则调用默认编辑器条目:
(cmd, path, line, column) -> `$cmd $path`
请注意,许多编辑器已经定义。 以下所有命令都应该已经工作:
*emacs *emacsclient *vim *nvim *纳米 *微 *卡克 *螺旋线 *textmate *伴侣 *凯特 *subl *原子 *记事本++ *Visual Studio代码 *打开 *pycharm *bbedit
*例子*
下面定义了基于终端的用法 emacs的:
define_editor(
r"\bemacs\b.*\s(-nw|--no-window-system)\b", wait=true) do cmd, path, line
`$cmd +$line $path`
end
|
兼容性
朱莉娅1.4 |
# *`InteractiveUtils.更少`*-Method
less(file::AbstractString, [line::Integer])
使用默认寻呼机显示文件,可选地提供起始行号。 返回 朱莉娅 退出寻呼机时提示。
# *`InteractiveUtils.@少`*-马科罗_
@less
计算函数或宏调用的参数,确定它们的类型,并调用 更少结果表达式上的函数。
请参阅: @编辑, @哪个, @code_lowered.
# *`InteractiveUtils.@code_lowered`*-马科罗_
@code_lowered
计算函数或宏调用的参数,确定它们的类型,并调用 [医鳕鱼]在所得到的表达式上。
请参阅: [医鳕鱼], @code_warntype, @code_typed, @code_llvm, @code_native.
# *`InteractiveUtils.@code_typed`*-马科罗_
@code_typed
计算函数或宏调用的参数,确定它们的类型,并调用 代码类型在所得到的表达式上。 使用可选参数 优化 与
@code_typed optimize=true foo(x)
控制是否还应用其他优化(如内联)。
请参阅: 代码类型, @code_warntype, @code_lowered, @code_llvm, @code_native.
# *`InteractiveUtils.code_warntype`*-函数
code_warntype([io::IO], f, types; debuginfo=:default)
为匹配给定的泛型函数和类型签名的方法打印降低的和类型推断的ASTs 伊俄 默认为 标准输出. ASTs的注释方式是导致非具体类型,这可能是问题的性能强调(如果颜色可用,显示为红色)。 这可作为潜在类型不稳定的警告。
并非所有的非具体类型对于性能都是特别有问题的,并且特定类型的性能特征是编译器的实现细节。 code_warntype 如果它们可能是性能问题,则会在着色类型红色方面出错,因此即使它们不影响性能,某些类型也可能会着色为红色。 混凝土类型的小工会通常不是一个问题,所以这些都以黄色突出显示。
关键字参数 debuginfo,debuginfo 可能是 :资料来源 或 :无 (默认),用于指定代码注释的详细程度。
查看 @code_warntype手册性能提示页面中的部分以获取更多信息。
请参阅: @code_warntype, 代码类型, [医鳕鱼], code_llvm, 编码,编码.
# *`InteractiveUtils.@code_warntype`*-马科罗_
@code_warntype
计算函数或宏调用的参数,确定它们的类型,并调用 code_warntype在所得到的表达式上。
# *`InteractiveUtils.code_llvm`*-函数
code_llvm([io=stdout,], f, types; raw=false, dump_module=false, optimize=true, debuginfo=:default)
打印为运行与给定泛型函数和类型签名匹配的方法而生成的LLVM位码 伊俄.
如果 优化 关键字未设置,代码将在LLVM优化之前显示。 所有元数据和dbg。*从打印的位码中删除调用。 对于完整的IR,设置 生的 关键字为true。 要转储封装函数的整个模块(带有声明),请设置 转储器/转储器 关键字为true。 关键字参数 debuginfo,debuginfo 可以是source(默认)或none之一,以指定代码注释的详细程度。
请参阅: @code_llvm, code_warntype, 代码类型, [医鳕鱼], 编码,编码.
# *`InteractiveUtils.@code_llvm`*-马科罗_
@code_llvm
计算函数或宏调用的参数,确定它们的类型,并调用 code_llvm在所得到的表达式上。 设置可选关键字参数 生的, 转储器/转储器, debuginfo,debuginfo, 优化 通过将它们和它们的值放在函数调用之前,如下所示:
@code_llvm raw=true dump_module=true debuginfo=:default f(x)
@code_llvm optimize=false f(x)
优化 控制是否还应用其他优化(如内联)。 生的 使所有元数据和dbg。*呼叫可见。 debuginfo,debuginfo 可能是 :资料来源 (默认)或 :无,以指定代码注释的详细程度。 转储器/转储器 打印封装函数的整个模块。
# *`InteractiveUtils.编码,编码`*-函数
code_native([io=stdout,], f, types; syntax=:intel, debuginfo=:default, binary=false, dump_module=true)
打印为运行与给定泛型函数和类型签名匹配的方法而生成的本机程序集指令 伊俄.
*通过设置设置程序集语法 语法 到 :英特尔 (默认)对于英特尔语法或 :att 对于AT&T;语法.
*通过设置指定代码注释的详细程度 debuginfo,debuginfo 到 :资料来源 (默认)或 :无.
*如果 二进制 是 真的,还打印每条前面有缩写地址的指令的二进制机器代码。
*如果 转储器/转储器 是 错误,不要打印元数据,如rodata或指令。
*如果 生的 是 错误,无趣的指令(如safepoint函数序章)被忽略。
请参阅: @code_native, code_warntype, 代码类型, [医鳕鱼], code_llvm.
# *`InteractiveUtils.@code_native`*-马科罗_
@code_native
计算函数或宏调用的参数,确定它们的类型,并调用 编码,编码在所得到的表达式上。
设置任意可选关键字参数 语法, debuginfo,debuginfo, 二进制 或 转储器/转储器 通过将它放在函数调用之前,如下所示:
@code_native syntax=:intel debuginfo=:default binary=true dump_module=false f(x)
*通过设置设置程序集语法 语法 到 :英特尔 (默认)对于英特尔语法或 :att 对于AT&T;语法.
*通过设置指定代码注释的详细程度 debuginfo,debuginfo 到 :资料来源 (默认)或 :无.
*如果 二进制 是 真的,还打印每条前面有缩写地址的指令的二进制机器代码。
*如果 转储器/转储器 是 错误,不要打印元数据,如rodata或指令。
请参阅: 编码,编码, @code_warntype, @code_typed, @code_lowered, @code_llvm.
# *`基地。@time_imports`*-马科罗_
@time_imports
一个宏,用于执行表达式并生成导入包及其依赖项所花费的任何时间的报告。 任何编译时间都将以百分比报告,其中有多少是重新编译(如果有的话)。
每个包或包扩展打印一行。 显示的持续时间是导入该包本身的时间,不包括加载其任何依赖项的时间。
关于朱莉娅1.9+ 包扩展将显示为父→扩展.
|
注意在加载过程中,包会按顺序导入其所有依赖项,而不仅仅是直接依赖项。 |
julia> @time_imports using CSV
50.7 ms Parsers 17.52% compilation time
0.2 ms DataValueInterfaces
1.6 ms DataAPI
0.1 ms IteratorInterfaceExtensions
0.1 ms TableTraits
17.5 ms Tables
26.8 ms PooledArrays
193.7 ms SentinelArrays 75.12% compilation time
8.6 ms InlineStrings
20.3 ms WeakRefStrings
2.0 ms TranscodingStreams
1.4 ms Zlib_jll
1.8 ms CodecZlib
0.8 ms Compat
13.1 ms FilePathsBase 28.39% compilation time
1681.2 ms CSV 92.40% compilation time
|
兼容性
Julia1.8这个宏至少需要Julia1.8 |
# *`基地。@trace_compile`*-马科罗_
@trace_compile
一个宏,用于执行表达式并显示已编译(或以黄色重新编译)的任何方法,如julia args --trace-compile=stderr—trace-compile-timing 但特别是为了一个电话。
julia> @trace_compile rand(2,2) * rand(2,2)
#= 39.1 ms =# precompile(Tuple{typeof(Base.rand), Int64, Int64})
#= 102.0 ms =# precompile(Tuple{typeof(Base.:(*)), Array{Float64, 2}, Array{Float64, 2}})
2×2 Matrix{Float64}:
0.421704 0.864841
0.211262 0.444366
|
兼容性
Julia1.12这个宏至少需要Julia1.12 |
# *`基地。@trace_dispatch`*-马科罗_
@trace_dispatch
用于执行通过动态调度编译的表达式和报表方法的宏,如julia arg --trace-dispatch=stderr 但特别是为了一个电话。
|
兼容性
Julia1.12这个宏至少需要Julia1.12 |
# *`InteractiveUtils.剪贴板`*-函数
clipboard(x)
发送打印的表格 x 到操作系统剪贴板("复制")。
clipboard() -> String
返回包含操作系统剪贴板内容的字符串("粘贴")。