我是一个新的朱莉娅用户,即将写我的第一个剧本。我使用R、Matlab和python进行数据分析,并且我还没有考虑到c或java中的人对于内存分配和更高级编程i geuss的担忧。我想用julia来模拟一些生物数据,在python中,这些类型的程序会变得非常慢。因此,当我在内存分配上读到这个角色的表演技巧时,吸引了我的眼球。作为一个缺乏更高级的语言背景的人,比如C语言,我应该寻找什么?我读过这个堆栈文章这里,但是他有自己编译过的python代码,然后在Julia中运行,所以我觉得这不相关。
当我有不寻常的内存分配时,我如何知道,反过来,Julia中的“好”内存分配是什么样子?有没有办法根据我正在运行的内容来确定一个不可接受的内存需求水平?
除了@time宏之外,还有哪些其他的校对技巧呢?
发布于 2021-01-31 18:01:34
要理解朱莉娅的性能问题,必须仔细阅读https://docs.julialang.org/en/v1/manual/performance-tips/,运行页面中的所有示例。
通常,内存分配不是主要的瓶颈。根据我的经验,当人们开始使用Julia时,类型稳定性和使用全局变量是所有性能问题的主要来源。
上述文件还有一个关于内存分配的章节:
“意外的内存分配几乎总是代码出现问题的迹象,通常是类型稳定性问题或创建许多小型临时数组的问题。”
你会发现关于解决这些问题的详细讨论。
关于代码分析,您有以下工具:
@time宏(请注意,第一次为给定方法运行它时,实际上主要是测量编译时,而不是运行时。因此,通常建议使用BenchmarkTools.jlBenchmarkTools.jl和它的@btime宏(以及其他--理解正在发生的事情的第一选择)ProfileView.jl和ProfileSVG.jl包,分别用于在独立和木星环境中可视化分析数据。@code_lowered、@code_typed和@code_native在不同编译阶段查看代码。这些是最基本和最有用的工具,为一个良好的开始执行朱莉娅代码。
https://stackoverflow.com/questions/65980601
复制相似问题