簡體   English   中英

球拍中的計時功能

[英]Timing function in Racket

Scheme中計時功能的語法令人困惑。 如果我想檢查CPU周期,我應該可以將我的整個代碼包裝在(時間碼)中,它應該產生這樣的代碼嗎? 每當我嘗試將其包裝在(時間)中時,都會收到錯誤消息。

lambda: no expression after a sequence of internal definitions in: lambda

在Scheme中運行程序時,我還需要檢查CPU使用率的哪些其他選擇?

不幸的是,如果時間主體中的最后一個形式不是表達式,那么時間似乎不起作用。 幸運的是, (void)是一個(相對)自由的表達式。 1您可以將其添加為時間的最后一個表達式,從而為您提供:

(time
  .... your code here ....
  (void))

因此,例如,以下代碼將為您提供如下結果:

> (time
    (define x 
      (for/list ([i (in-range 1000000)])
        i))
    (void))
cpu time: 148 real time: 149 gc time: 124

1與CS和時間安排中的任何內容一樣,此處是否要考慮空缺也取決於。 但在許多情況下,單次調用void應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM