Move racket/future/visualizer, racket/future/trace --> future-visualizer, future-visualizer/trace

This commit is contained in:
James Swaine 2012-07-16 12:23:46 -05:00
parent a605183a0a
commit b987be068e
14 changed files with 37 additions and 38 deletions

View File

@ -2,14 +2,14 @@
(require racket/contract
slideshow/pict
racket/bool
racket/future/trace
future-visualizer/trace
"private/visualizer-gui.rkt"
"private/visualizer-drawing.rkt")
(provide visualize-futures
(contract-out
[show-visualizer (-> void?)]
[show-visualizer (->* () (#:timeline (listof indexed-future-event?)) void?)]
[visualize-futures-thunk ((-> any/c) . -> . any/c)]
[show-visualizer-for-events ((listof indexed-future-event?) . -> . void?)]
[timeline-pict (->i ([indexed-fevents (listof indexed-future-event?)])
(#:x [x (or/c #f exact-nonnegative-integer?)]
#:y [y (or/c #f exact-nonnegative-integer?)]

View File

@ -9,8 +9,7 @@
"display.rkt"
"constants.rkt")
(provide show-visualizer
show-visualizer-for-events)
(provide show-visualizer)
;;rebuild-mouse-index : frame-info trace (listof segment) -> interval-map of (range --> interval-map)
(define (rebuild-mouse-index frameinfo tr segs)
@ -84,12 +83,11 @@
(values (min screen-w DEF-WINDOW-WIDTH)
(min screen-h DEF-WINDOW-HEIGHT)))
;;show-visualizer-for-events : (listof indexed-fevent) -> void
(define (show-visualizer-for-events logs)
;If for some reason the log is empty, error
(when (empty? logs)
(error 'show-visualizer "No future log messages found."))
(define the-trace (build-trace logs))
(define (show-visualizer #:timeline [timeline #f])
(define the-tl (if timeline timeline (timeline-events)))
(when (empty? the-tl)
(error 'show-visualizer "No future log messages found."))
(define the-trace (build-trace the-tl))
(define-values (winw winh) (get-window-size))
;The event segment we are currently mousing over
(define hover-seg #f)
@ -354,6 +352,3 @@
(set! showing-create-graph (not showing-create-graph)))])
(send f show #t))
(define (show-visualizer)
(show-visualizer-for-events (timeline-events)))

View File

@ -4,7 +4,7 @@
(provide (struct-out future-event)
(struct-out indexed-future-event)
trace-futures
(contract-out
(contract-out
[start-performance-tracking! (-> void?)]
[timeline-events (-> (listof indexed-future-event?))]
[trace-futures-thunk ((-> any/c) . -> . (listof indexed-future-event?))]))

View File

@ -1,11 +1,11 @@
#lang scribble/doc
@(require scribble/manual scribble/eval "guide-utils.rkt"
(for-label racket/flonum racket/future))
(for-label racket/flonum racket/future future-visualizer))
@(define future-eval (make-base-eval))
@(interaction-eval #:eval future-eval (require racket/future
racket/future/private/visualizer-drawing
racket/future/private/visualizer-data))
future-visualizer/private/visualizer-drawing
future-visualizer/trace))
@title[#:tag "effective-futures"]{Parallelism with Futures}
@ -105,10 +105,10 @@ Unfortunately, attempting to run the two computations in parallel with
(touch f)))
]
To see why, use the @racketmodname[racket/future/visualizer], like this:
To see why, use the @racketmodname[future-visualizer], like this:
@racketblock[
(require racket/future/visualizer)
(require future-visualizer)
(visualize-futures
(let ([f (future (lambda () (mandelbrot 10000000 62 501 1000)))])
(list (mandelbrot 10000000 62 500 1000)

View File

@ -1,11 +1,11 @@
#lang scribble/doc
@(require "mz.rkt" (for-label racket/future racket/future/trace))
@(require "mz.rkt" (for-label racket/future future-visualizer/trace))
@title[#:tag "futures-trace"]{Futures Tracing}
@guideintro["effective-futures"]{the future visualizer}
@defmodule[racket/future/trace]
@defmodule[future-visualizer/trace]
The @deftech{futures trace} module exposes low-level information about
the execution of parallel programs written using @racket[future].
@ -22,7 +22,7 @@ the execution of parallel programs written using @racket[future].
@racketblock[
(require racket/future
racket/future/trace)
future-visualizer/trace)
(trace-futures
(let ([f (future (lambda () ...))])
@ -34,7 +34,7 @@ the execution of parallel programs written using @racket[future].
@racketblock[
(require racket/future
racket/future/trace)
future-visualizer/trace)
(start-performance-tracking!)
(let ([f (future (lambda () ...))])
@ -76,7 +76,7 @@ useful for debugging the performance of programs that use futures.
Though textual log output can be viewed directly (or retrieved in
code via @racket[trace-futures]), it is much
easier to use the graphical profiler tool provided by
@racketmodname[racket/future/visualizer].
@racketmodname[future-visualizer].
In addition to its string message, each event logged for a future has
a data value that is an instance of a @racket[future-event]

View File

@ -1,11 +1,11 @@
#lang scribble/doc
@(require "mz.rkt" (for-label racket/future/trace racket/future))
@(require "mz.rkt" (for-label future-visualizer/trace racket/future))
@title[#:tag "futures-visualizer"]{Futures Visualizer}
@guideintro["effective-futures"]{the future visualizer}
@defmodule[racket/future/visualizer]
@defmodule[future-visualizer]
The @deftech{futures visualizer} is a graphical profiling tool
for parallel programs written using @racket[future]. The tool
@ -27,7 +27,7 @@ at any point during the program's lifetime.
@racketblock[
(require racket/future
racket/future/visualizer)
future-visualizer)
(visualize-futures
(let ([f (future (lambda () ...))])
@ -39,8 +39,8 @@ at any point during the program's lifetime.
@racketblock[
(require racket/future
racket/future/trace
racket/future/visualizer)
future-visualizer/trace
future-visualizer)
(start-performance-tracking!)
(let ([f (future (lambda () ...))])
@ -51,10 +51,14 @@ at any point during the program's lifetime.
]
}
@defproc[(show-visualizer) void?]{
Displays the profiler window. Calls to this
function must be preceded by a call to @racket[start-performance-tracking!] (or can
be avoided altogether by using either @racket[visualize-futures] or @racket[visualize-futures-thunk]).
@defproc[(show-visualizer [#:timeline timeline (listof indexed-future-event?)]) void?]{
Displays the visualizer window. If the function is called with no arguments,
it must be preceded by a call to @racket[start-performance-tracking!] -- in which case
the visualizer will show data for all events logged in between (via @racket[timeline-events]).
Note that @racket[visualize-futures] and @racket[visualize-futures-thunk] are simpler alternatives to using these
primitives directly.
The @racket[timeline] argument can be used to show the visualizer for a previously-generated
trace.
}
@section[#:tag "future-visualizer-timeline"]{Execution Timeline}

View File

@ -2,10 +2,10 @@
(require rackunit
racket/list
racket/vector
racket/future/private/visualizer-drawing
racket/future/private/visualizer-data
racket/future/private/display
racket/future/private/graph-drawing)
future-visualizer/private/visualizer-drawing
future-visualizer/private/visualizer-data
future-visualizer/private/display
future-visualizer/private/graph-drawing)
(define (compile-trace-data logs)
(define tr (build-trace logs))