用sharedarray + @parallel for 与 array + for对比

 cnt = SharedArray(Int,1)
 cnt[1]=0;
 st=time();

 for i in 1:10^7
 cnt[1]=cnt[1]+1;
 end;

 ed=time();
 println(cnt[1])
 println(ed-st);

 cnt = Array(Int,1)
 cnt[1]=0;
 st=time();

 for i in 1:10^7
 cnt[1]=cnt[1]+1;
 end;

 ed=time();
 println(cnt[1])
 println(ed-st);

 cnt = SharedArray(Int,1)
 cnt[1]=0;
 st=time();

 @parallel for i in 1:10^7
 cnt[1]=cnt[1]+1;
 end;

 ed=time();
 println(cnt[1])
 println(ed-st);
 println(cnt)

---输出
julia> include("d:\\testp.txt")
10000000
 2.1689999103546143
 10000000
 1.6689999103546143
 0
 0.42100000381469727
 [10000000]

串行的代码,cnt[1]的输出是好的,不知道并行代码cnt[1]为什么输出0,如果把cnt的输出移到后面,就可以输出了。
把sharedarray改为array也能算对,也是一样的速度

 cnt = Array(Int,1)
 cnt[1]=0;
 st=time();

 @parallel for i in 1:10^7+100
 cnt[1]=cnt[1]+1;
 end;

 ed=time();
 println(ed-st);
 println(cnt[1])

 println(cnt)
---输出
julia> include("d:\\testp.txt")
0.437000036239624
10000100
[10000100]

访问数组也是并行快

 a=trues(10^7);

 for i in 1:10^6
 a[i*10]=0;
 end
 cnt = Array(Int,1);
 cnt[1]=0;
 st=time();

 @parallel for i in 1:10^7
 cnt[1]=cnt[1]+a[i];
 end;

 ed=time();
 println(ed-st);
 println(cnt[1])

 println(cnt)
---输出
julia> include("d:\\testp.txt")
0.42100000381469727
9000000
[9000000]

但是访问递归函数就是并行慢

 function re(n::Int32)
 if n>10 return 1;
 else return re(n+1)+n; end
 end

 cnt = Array(Int,1);
 cnt[1]=0;
 st=time();

 @parallel for i in 1:10^6
 cnt[1]=cnt[1]+re(1);
 end;

 ed=time();
 println(ed-st);
 println(cnt[1])

 println(cnt)

 cnt = Array(Int,1);
 cnt[1]=0;
 st=time();

 for i in 1:10^6
 cnt[1]=cnt[1]+re(1);
 end;

 ed=time();
 println(ed-st);
 println(cnt[1])

 println(cnt)
---输出

0.437000036239624
56000000
[56000000]
0.28099989891052246
56000000
[56000000]