如何停止在Forth中立即输出的值?

问题描述

我目前正在使用SwiftForth寻找一种方法来测量一个单词执行所花费的时间。我使用的形式是“计数器”,然后是“计时器”:

counter insert_word_here timer

这将立即输出运行单词所需的时间(以微秒为单位)。有什么办法可以防止立即输出此整数,以便将其存储在堆栈中?

解决方法

timer在SwiftForth中的实现方式类似于

: timer  \ t0 -- ;
  counter swap - u.
;

只需定义一个没有u.的单词,经过的时间(以毫秒为单位)就会留在堆栈上。

: timer-ms \ t0 -- t-elapsed
  counter swap -
;

我没有SwiftForth,但是在我发现的页面上将计时器定义为示例。我认为这应该可行,但我无法对其进行测试。