blob: 18439de7c569e46347753c9a4f17dfd8ba7ea242 (
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#+TITLE: Tasks
* TODO Write background chapter
DEADLINE: <2023-10-20 Fri>
** TODO Problem Introduction
- applications use many different container types
- developers often only care about the functional requirements/semantics of these containers
- however, they are usually forced to specify a concrete implementation (examples)
** TODO Motivation
- justify performance benefit
** TODO Look into Perflint
https://ieeexplore.ieee.org/abstract/document/4907670
** TODO Brainy
- uses ai model to predict based on target microarchitecture, and runtime behaviour
- uses access pattersn, etc.
- also assumes semantically identical set of candidates
- uses application generator for training data
- focuses on the performance difference between microarchitectures
- intended to be run at each install site
** TODO Chameleon
- hooks into gc and uses collection twrapper to collect statistics like space utilisation and access patterns.
- then uses collection selection rules to suggest improvements.
- includes a mode for online replacement of implementation, and an automatic code modifier
- requires special knowledge of the concrete implementations used
- limited in the semantic classes it can deal with
- focused primarily on memory usage
- limited to java, and techniques used are tied to GC-based languages
** TODO CollectionSwitch
- online selection - uses library so easier to integrate
- collects access patterns, size patterns, etc.
- performance model is built beforehand for each concrete implementation, with a cost model used to estimate the relative performance of each based on observed usage
- switches underlying implementation dynamically
- also able to decide size thresholds where the implementation should be changed and do this
- doesn't require specific knowledge of the implementations, although does still assume all are semantically equivalent
** TODO Primrose
- primrose allows specifying syntactic and semantic properties, and gives concrete implementations satisfying these properties
- however, this only deals with the functional requirements for the program, and not non-functional requirements
- it is still up to the developer to choose which of these performs the best, etc. or brute force it
|