2

プログラムの実行時間を測定するには? 私はこれを見つけましたが、私のプログラムが機能するにはスタックにいくつかの数値が必要であるため、私のプログラムとこのソリューションの種類が互いに干渉しているため、機能しません(私が試してtime: myfunctime: num1 num2 myfunc何も機能しないため....)

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

助けてくれてありがとう

4

1 に答える 1

6

tick'は、 への呼び出しの直後にテキストを解析しますtime:。したがって、引数を指定した呼び出しの場合は、次のようにする必要がありますnum1 num2 time: myfunc

また、ティックは実行時に入力ストリームを解析します。の呼び出しがtime:単語定義に埋め込まれている場合、 の直後の単語ではなく、入力ストリームから単語の実行トークンを取得しようとしますtime:。コンパイル時に次の単語[']を取得するために使用し、それを引数としてxtxttime:

: 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

には'呼び出しがないことに注意してください。 はスタックからトークンを取得します。timeEXECUTE

于 2019-10-13T06:46:57.867 に答える