1. 是否有必要把Int64转为Int32 2.是否有一种方法Int生成时默认是nt32

我查看了帖子 Julia的执行效率与主流科学计算语言一个简单的对比 - 综合讨论区 - Julia中文社区 (juliacn.com),该话题中提到使用Int32会大幅度提升效率。因此我产生了和 Is it possible to force use Int32, instead of Int64 - General Usage / Performance - Julia Programming Language (julialang.org)一样的疑问:

  1. 是否有必要把Int64转为Int32
    2.是否有一种方法Int生成时默认是Int32,还是只能手动类型转换(length一类的函数输出应该都是Int64,需要手动转成Int32?这样做的开销和转换成Int32带来的提升比,整体效果会有提升吗?
function testp(x::Int32)
    for i::Int32 = 2:x-1
        if x % i == 0
            return 0
        end
    end
    return 1
end
c = Vector{Int32}(undef, 500000)
@time begin
    for i::Int32 = 1:500000
        c[i] = testp(i)
    end
end

用Int64和Int32各执行两次取平均时间,Int64为20.869s,Int32为18.935s(i7-10875),节省9.3%的时间。测试环境vscode和julia REPL v1.10.4。能节省多少时间取决于具体的代码。如果是我我会把项目写好后改成两个版本,一个用Int64一个Int32,看这个东西具体在我的项目上能不能节省下来时间。

我明白了,非常感谢你

我整体的印象是如果你的程序里面使用了以Int64作为基本类型的数组,那么在不越界的情况下改为Int32能节省一半空间并提升一点效率。但是Julia内部数组的index索引最终都是Int64类型,所以如果仅仅是Int64参数的时候没有必要强制改为Int32.

我明白了,谢谢你