aboutsummaryrefslogtreecommitdiff
path: root/thesis/parts/introduction.tex
blob: 452a6d8833b733892a473e3a71971c1d2ee26295 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
%% *** Introduce problem

%% **** Container types common in programs

The vast majority of programs will make extensive use of collection data types --- types intended to hold multiple instances of other types.
This allows programmers to use things like growable lists, sets, or trees without worrying about implementing them themselves.

%% **** Functionally identical implementations

However, this still leaves the problem of selecting the ``best'' underlying implementation.
Most programmers will simply stick with the same one every time, with some languages like Python even building in a single implementation for everyone.
%% **** Large difference in performance
While this is simplest, it can have a drastic effect on performance in many cases (\cite{l_liu_perflint_2009}, \cite{jung_brainy_2011}).

%% *** Motivate w/ effectiveness claims

%% *** Overview of aims & approach

We propose a system for the automatic selection of container implementations, based on both user-specified requirements and inferred requirements for performance.
%% **** Scalability to larger projects
%% **** Ease of integration into existing projects
%% **** Ease of adding new container types
Our system is built to be scalable, both in the sense that it can be applied to large projects, and that new container types can be added with ease.

%% **** Flexibility of selection
We are also able to detect some cases where the optimal container type varies at runtime, and supply containers which start off as one implementation, and move to another when it is more optimal to do so.

%% *** Overview of results
\todo{Overview of results}