update performace section of gudie to mention unchecked ops
svn: r16230
This commit is contained in:
parent
9852bb16a2
commit
818c4b0409
|
@ -1,6 +1,7 @@
|
||||||
#lang scribble/doc
|
#lang scribble/doc
|
||||||
@(require scribble/manual
|
@(require scribble/manual
|
||||||
"guide-utils.ss")
|
"guide-utils.ss"
|
||||||
|
(for-label scheme/unsafe/ops))
|
||||||
|
|
||||||
@title[#:tag "performance"]{Performance}
|
@title[#:tag "performance"]{Performance}
|
||||||
|
|
||||||
|
@ -262,6 +263,33 @@ generational garbage collector (described later in @secref["gc-perf"])
|
||||||
makes allocation for short-lived results reasonably cheap. Fixnums, in
|
makes allocation for short-lived results reasonably cheap. Fixnums, in
|
||||||
contrast are never boxed, so they are especially cheap to use.
|
contrast are never boxed, so they are especially cheap to use.
|
||||||
|
|
||||||
|
The @schememodname[scheme/unsafe/ops] library provides fixnum- and
|
||||||
|
flonum-specific operations, and combinations of unchecked flonum
|
||||||
|
operations allow the @tech{JIT} compiler to generate code that avoids
|
||||||
|
boxing and unboxing intermediate results. Currently, only expressions
|
||||||
|
involving a combination of unchecked flonum operations,
|
||||||
|
@scheme[unsafe-fx->fl], constants, and variable references are
|
||||||
|
optimized to avoid boxing. See also @secref["unchecked-unsafe"],
|
||||||
|
especially the warnings about unsafety.
|
||||||
|
|
||||||
|
@; ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@section[#:tag "unchecked-unsafe"]{Unchecked, Unsafe Operations}
|
||||||
|
|
||||||
|
The @schememodname[scheme/unsafe/ops] library provides functions that
|
||||||
|
are like other functions in @schememodname[scheme/base], but they
|
||||||
|
assume (instead of checking) that provided arguments are of the right
|
||||||
|
type. For example, @scheme[unsafe-vector-ref] accesses an element from
|
||||||
|
a vector without checking that its first argument is actually a vector
|
||||||
|
and without checking that the given index is in bounds. For tight
|
||||||
|
loops that use these functions, avoiding checks can sometimes speed
|
||||||
|
the computation, though the benefits vary for different unchecked
|
||||||
|
functions and different contexts.
|
||||||
|
|
||||||
|
Beware that, as ``unsafe'' in the library and function names suggest,
|
||||||
|
misusing the exports of @schememodname[scheme/unsafe/ops] can lead to
|
||||||
|
crashes or memory corruption.
|
||||||
|
|
||||||
@; ----------------------------------------------------------------------
|
@; ----------------------------------------------------------------------
|
||||||
|
|
||||||
@section[#:tag "gc-perf"]{Memory Management}
|
@section[#:tag "gc-perf"]{Memory Management}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user