level 10
Loydman
楼主
f[x_ ] := x^2 + 1;
g = Compile[{x }, x^2 + 1];
h = #^2 + 1 &;
a = f /@ Range[10^5];
b = g /@ Range[10^5];
c = h /@ Range[10^5];
a == b == c
ByteCount /@ {a, b, c}
(*
True
{2400080, 800200, 800200}
*)
表面上a,b,c结果是相同的,但如果需要将a,b,c用于后续的计算,a与b,c计算时间会有明显的差别
Min[a]; // AbsoluteTiming
Min[b]; // AbsoluteTiming
Min[c]; // AbsoluteTiming
(*
{0.0005798, Null}
{0.0000589, Null}
{0.0000559, Null}
*)
这是什么原因
2024年08月04日 16点08分
1
g = Compile[{x }, x^2 + 1];
h = #^2 + 1 &;
a = f /@ Range[10^5];
b = g /@ Range[10^5];
c = h /@ Range[10^5];
a == b == c
ByteCount /@ {a, b, c}
(*
True
{2400080, 800200, 800200}
*)
表面上a,b,c结果是相同的,但如果需要将a,b,c用于后续的计算,a与b,c计算时间会有明显的差别
Min[a]; // AbsoluteTiming
Min[b]; // AbsoluteTiming
Min[c]; // AbsoluteTiming
(*
{0.0005798, Null}
{0.0000589, Null}
{0.0000559, Null}
*)
这是什么原因