Я сейчас пишу игру в Racket, используя canvas. Я бы очень хотел профилировать свой код, чтобы помочь оптимизировать его, но я изо всех сил пытаюсь понять, как это сделать. У меня есть игровой цикл, управляемый таймером, который управляет обновлением объекта и вызывает refresh
на холсте (я переопределил (on-paint)
). Я попытался профилировать мой основной файл, и (send frame show #t)
,
(send canvas start frame)
, и мой таймер, но он не профилирует все это. В идеале я бы хотел, чтобы он был в профиле, пока я не закрою окно.
(define/public (game-loop dt)
(update dt)
(integrate dt)
(refresh))
(define/public (start frame)
(unless game-loop-timer
(send frame set-canvas! this)
(set! last-frame-time (current-inexact-milliseconds))
(set! game-loop-timer
(new timer% [interval frame-interval]
[notify-callback
(lambda _
(yield)
(define dt (/ (- (current-inexact-milliseconds) last-frame-time) 1000.0))
(set! last-frame-time (current-inexact-milliseconds))
(send this game-loop dt))]))))