{"size": 958, "ext": "scrbl", "max_stars_repo_path": "paper/case-studies.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": "paper/case-studies.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": "paper/case-studies.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": 39.9166666667, "max_line_length": 84, "alphanum_fraction": 0.7818371608}
#lang scribble/base
@(require
   "defs.rkt"
   "bib.rkt"
   scribble/manual)

@title[#:tag "case-studies"]{Case Studies}
@todo{Is "expressive" the right word? I think so. I'm talking about what
kinds of of PGOs our design can express.}
To evaluate the expressive power and usability of our design, we carry
out three case studies.
In the first study, we demonstrate an implementation of @racket[case]
expressions, which are analogous to C's @code{switch} statements, that
performs a well-known PGO.
In the second study, we equip an embedded object system with profile-guided receiver
class prediction@~citea["holzle1994optimizing" "grove95"].
In the the third and final study, we present libraries that recommend
and automate high-level changes to data structures, similar to the
recommendations given by tools like Perflint@~citea{liu09}.

@include-section{study-case.scrbl}
@include-section{study-virtual-call.scrbl}
@include-section{study-datatype.scrbl}
