AbsoluteTiming的输出

时间:2011-09-22 07:53:09

标签: wolfram-mathematica

这只是一种好奇心 - 我没有真正的问题。 AbsoluteTiming的输出具有明确的模式;谁能确认/解释?

xxx = RandomReal[NormalDistribution[0, 1], 10^6];

Sin[#] & /@ xxx; // AbsoluteTiming
(* {0.0890089, Null} *)

Max[Exp[#] - 0.5, 0] & /@ xxx; // AbsoluteTiming
(* {0.1560156, Null} *)

$Version
8.0 for Microsoft Windows (64-bit) (February 23, 2011)

3 个答案:

答案 0 :(得分:2)

是的。让我们检查时间量是否一致:

Differences@
 Round[10^5 Sort@
    Union[AbsoluteTiming[
         Sin[#] & /@ 
           RandomReal[NormalDistribution[0, 1], #];][[1]] & /@ 
      RandomInteger[10^6, 100]]]

(*
-> {1562, 1563, 1563, 1562, 1562, 1563, 1563, 1562, 1562, 1563, 1563, \
    1562, 1562, 1563, 1563, 1562, 1562}
*)

修改

更好的代码

Differences@
 Sort@Union[
   Round[10^5 AbsoluteTiming[
         Sin[#] & /@ 
           RandomReal[NormalDistribution[0, 1], #];][[1]] & /@ 
     RandomInteger[10^6, 100]]]

答案 1 :(得分:2)

根据文档,“AbsoluteTiming始终精确到$TimeUnit秒的粒度,但在许多系统上更准确。”所以评估$TimeUnit可能会解释这个问题。

答案 2 :(得分:1)

据推测,您的系统时钟只有几分之一秒的粒度才会产生重复的小数。我在Mac上从未注意到这一点 不过很酷。

修改
既然我在家,我可以确认这必须是系统特定的:这是我在belisarius答案中的代码输出:

{56, 119, 28, 25, 33, 397, 35, 82, 185, 67, 41, 67, 218, 192, 115, \
28, 74, 16, 187, 222, 194, 8, 129, 399, 68, 75, 71, 34, 5, 37, 62, \
64, 137, 173, 24, 98, 135, 308, 63, 155, 208, 861, 22, 72, 72, 184, \
609, 564, 112, 1011, 118, 81, 158, 90, 351, 33, 35, 68, 10, 126, 39, \
194, 7, 108, 278, 75, 37, 214, 34, 166, 119, 10, 335, 141, 4, 988, \
90, 121, 71, 130, 117, 186, 33, 123, 111, 110, 57, 64, 213, 217, 210, \
204, 98, 247, 20, 1421, 28, 2003, 353}