{"size": 1464, "ext": "scrbl", "max_stars_repo_path": "rackpgmp/perflinty/docs/perflinty.scrbl", "max_stars_repo_name": "bluephoenix47/pgmp", "max_stars_repo_stars_event_min_datetime": "2015-04-26T14:23:58.000Z", "max_stars_repo_stars_event_max_datetime": "2015-04-26T14:23:58.000Z", "max_issues_repo_path": "rackpgmp/perflinty/docs/perflinty.scrbl", "max_issues_repo_name": "bluephoenix47/pgmp", "max_issues_repo_issues_event_min_datetime": "2015-02-12T17:56:28.000Z", "max_issues_repo_issues_event_max_datetime": "2015-04-14T04:04:26.000Z", "max_forks_repo_path": "rackpgmp/perflinty/docs/perflinty.scrbl", "max_forks_repo_name": "bluephoenix47/pgmp", "max_forks_repo_forks_event_min_datetime": "2016-04-10T19:03:41.000Z", "max_forks_repo_forks_event_max_datetime": "2016-04-10T19:03:41.000Z"}
{"max_stars_count": 1, "max_issues_count": 8, "max_forks_count": 1, "avg_line_length": 37.5384615385, "max_line_length": 72, "alphanum_fraction": 0.7780054645}
#lang scribble/manual
@(require
   (for-label
     (prefix-in builtin: racket/base)
     "../auto.rkt"
     "../vector.rkt"
     "../list.rkt"))

@title{Perflinty}

@declare-exporting[#:use-sources (racket/base)]
This guide describes a profile-guided data structure specialization
collection similar in spirit to
@hyperlink["https://dl.acm.org/citation.cfm?id=1545076"]{Perflint},
provided by the @racket[rackpgmp] package.

The collection currently supports a limited subset of
@racketlink[builtin:list @racketfont{list}] and
@racketlink[builtin:vector @racketfont{vector}] operations.

Each instance of a @racket[list], @racket[vector], or @racket[seq]
provided by the collection is separately profiled using a naïve scoring
system. Each instance keeps track of various @tech{score}s. A
@deftech{score} is kept for each potential data structure representation
of the instance. For example, a @racket[list] keeps two @tech{score}s:
one for @racket[list] operations and one for @racket[vector] operations.
Each @tech{score} measures how frequently operations that are
asymptotically fast for that data structure are used on the
instance.
The operations provided by the modules of this collection use and
increment these scores differently.

As currently implemented, these scores are not fine-grained and may not
provide an accurate heuristic.

@include-section{perflinty-list.scrbl}
@include-section{perflinty-vector.scrbl}
@include-section{perflinty-auto.scrbl}
