julia - 如何在 Julia 中创建功能障碍以提高性能?
问题描述
我正在阅读一些关于计算机科学中的障碍是什么(特别是函数障碍)的想法,并想知道如何在我自己的 Julia 代码中复制这种事情。我有以下功能:
julia> function strange_twos(n)
a = Vector{rand(Bool) ? Int64 : Float64}(undef, n)
for i = 1:n
a[i] = 2
end
return a
end;
我将如何为此功能添加障碍以提高性能?
解决方案
分解的方法如下:
julia> function fill_twos!(a)
for i = eachindex(a)
a[i] = 2
end
end;
julia> function strange_twos(n)
a = Vector{rand(Bool) ? Int64 : Float64}(undef, n)
fill_twos!(a)
return a
end;
这个实现速度很快的原因是在原始循环中,a
循环本身的类型是未知的。但是在上面提供的示例中,函数的类型a
将在调用函数时知道,因此可以预编译代码,从而提高速度。
您可以在性能改进部分下的 Julia 文档中阅读有关此内容的更多信息:https ://docs.julialang.org/en/v1/manual/performance-tips/#kernel-functions
推荐阅读
- php - Docusign 使用 php 客户端批量发送
- java - java 8之前接口中方法签名相同的情况下如何实现多重继承
- react-native - React Native 缺少脚本 Android
- java - 如何使用 Java Resthighlevel 客户端生成相同的弹性搜索查询?
- html - 复制时两个弹性项目之间的空白
- java - 如何使用 Spring JndiObjectFactoryBean 为 tomcat7 设置 jndiname 属性值?我这里的属性值是一个文件
- node.js - 如何在没有copyFile的情况下复制文件
- asp.net - ASP.NET MVC 应用程序 cookie 未在 Internet Explorer 的请求中发布
- amazon-web-services - Terraform,无法使用多值路径模式规则创建 ALB 规则
- mysql - 如何在mysql中使用count