小编zyc*_*zyc的帖子

如何在Julia中打破嵌套的for循环

我试图以一种非常无效的方式打破嵌套循环:

BreakingPoint = false
a=["R1","R2","R3"]
b=["R2","R3","R4"]
for i in a
  for j in b
    if i == j
      BreakingPoint = true
      println("i = $i, j = $j.")
    end
    if BreakingPoint == true; break; end
  end
  if BreakingPoint == true; break; end
end
Run Code Online (Sandbox Code Playgroud)

有更简单的方法吗?在我的实际问题,我没有什么是数组的想法ab,除了他们是ASCIIString秒.数组名称(a以及b示例代码)也是通过元编程方法自动生成的.

nested-loops julia

10
推荐指数
2
解决办法
3024
查看次数

为什么在Julia-Lang中进行更多的运算时,简化的数学方程式的运行(略)慢于其等价方程式?

在C ++课程中,我学会了一些技巧,例如避免重复计算,使用更多的加法而不是更多的乘法,避免幂等以提高性能。但是,当我尝试使用Julia-Lang优化代码时,我对相反的结果感到惊讶。

例如,以下是一些未进行数学优化的方程式(所有代码都是用Julia 1.1编写的,不是JuliaPro编写的):

function OriginalFunction( a,b,c,d,E )
    # Oprations' count:
    # sqrt: 4
    # ^: 14
    # * : 14
    # / : 10
    # +: 20
    # -: 6
    # = : 0+4
    x1 = (1/(1+c^2))*(-c*d+a+c*b-sqrt(E))
    y1 = d-(c^2*d)/(1+c^2)+(c*a)/(1+c^2)+(c^2*b)/(1+c^2)-(c*sqrt(E))/(1+c^2)

    x2 = (1/(1+c^2))*(-c*d+a+c*b+sqrt(E))
    y2 = d-(c^2*d)/(1+c^2)+(c*a)/(1+c^2)+(c^2*b)/(1+c^2)+(c*sqrt(E))/(1+c^2)

    return [ [x1;y1] [x2;y2] ]
end
Run Code Online (Sandbox Code Playgroud)

我用一些技巧优化了它们,包括:

  1. (a*b + a*c) -> a*(b+c) 因为加法比乘法快。
  2. a^2 -> a*a 避免电源操作。
  3. 如果长时间操作至少使用了两次,请将其分配给变量以避免重复计算。例如:
x = a * (1+c^2); y = b * (1+c^2)
->
temp = 1+c^2
x …
Run Code Online (Sandbox Code Playgroud)

math performance-testing simplify julia

3
推荐指数
1
解决办法
63
查看次数

在Julia中将Int转换为String的最佳方法是什么?

我正在使用Julia(版本0.4.6),我尝试过的方法是:

a = 123 
println(  string(Int(a))*"b"  )
Run Code Online (Sandbox Code Playgroud)

这看起来很长很尴尬.

我尝试过的另一种方法是将其写入文件,然后阅读它.这显然更糟.我想知道是否有推荐的方法.

string types julia

2
推荐指数
1
解决办法
343
查看次数