新手求助:我编写了一个function在大规模数据中运行内存不足崩溃,如何优化提高运行速度呢,

在服务器平台中的2个CPU,18G的运行内存的情况下测试我的代码,具体是一个计算的公式,我也尝试了@views,@@floop等一些提高效率的宏,但运行的时候还是会崩溃,请问我的代码该在哪些方面进行优化呢,能在16G的运行内存下正常运行?

function make_G_0(SNP_matrix)
SNP_matrix = [convert_genotype(s) for s in SNP_matrix]#首先将基因型转换为0,1,2,missing

n, m = size(SNP_matrix) #n为snp数,m为个体数

#先计算每个SNP的频率
p = vec(sum(SNP_matrix, dims = 2) ./ (2*m)) #vec变为数组形式


SNP_matrix = SNP_matrix[findall(x -> x != 1, p),:]
p = p[findall(x -> x != 1, p)]

#计算G矩阵
G =  (((SNP_matrix' .- 2*p') ./ ((2*p .* (1 .- p)))') * (SNP_matrix .- 2*p) ) / length(findall(x -> x != 1, p))

return G

end