g测量执行时间



如何测量程序的执行时间?我已经找到了这个,但它对我不起作用,因为我的程序需要堆栈中的一些数字才能工作,所以我的程序和这个解决方案相互干扰(据我所知,因为当我尝试time: myfunctime: num1 num2 myfunc时没有任何效果......

: time: ( "word" -- )
utime 2>R ' EXECUTE
utime 2R> D-
<# # # # # # # [CHAR] . HOLD #S #> TYPE ."  seconds" ;

感谢您的任何帮助

勾号'将解析调用time:后立即的文本。因此,对于带有参数的调用,应该num1 num2 time: myfunc

此外,tick 将在运行时解析输入流。如果您在单词定义中嵌入了对time:的调用,它将尝试从输入流中获取单词的执行 toke,而不是紧跟在time:后面的单词。使用[']获取编译时下一个单词的xt,并将该xt作为参数传递给time:

: time ( xt -- )
utime 2>R EXECUTE
utime 2R> D-
<# # # # # # # [CHAR] . HOLD #S #> TYPE ."  seconds" ;
: foo 0 1000000 0 do i + loop drop ;
: bar num1 num2 ['] foo time ;  pass the foo's xt as argument to time

请注意,time中没有'调用,EXECUTE将从堆栈中获取令牌。

最新更新