aboutsummaryrefslogtreecommitdiff
path: root/Tasks.org
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