Performance based adaptation of Scala programs
|Thesis title in Czech:||Adaptace programů ve Scale zaměřená na výkon|
|Thesis title in English:||Performance based adaptation of Scala programs|
|Key words:||adaptivní systémy, optimalizace výkonu, predikce běhu|
|English key words:||adaptive systems, performance optimization, run time prediction|
|Academic year of topic announcement:||2016/2017|
|Type of assignment:||diploma thesis|
|Department:||Department of Distributed and Dependable Systems (32-KDSS)|
|Supervisor:||prof. RNDr. Tomáš Bureš, Ph.D.|
|Author:||hidden - assigned and confirmed by the Study Dept.|
|Date of registration:||03.04.2017|
|Date of assignment:||10.04.2017|
|Confirmed by Study dept. on:||27.04.2017|
|Date and time of defence:||06.09.2017 10:30|
|Date of electronic submission:||21.07.2017|
|Date of submission of printed version:||21.07.2017|
|Date of proceeded defence:||06.09.2017|
|Reviewers:||Mgr. Vojtěch Horký, Ph.D.|
|Developers often come across situations where it is possible to implement the same functionality (algorithms, database queries, data manipulation, etc.) in multiple different ways. There can be a significant difference in the performance of these implementations and using an inappropriate one can have a negative impact on the application. In order to avoid this, the developer currently has to test the performance manually, select the best option and then use it in the program. The performance usually depends on the execution context (input data, configuration, etc.), so there might not be a single solution that would be the best in every case.
The goal of the thesis is to design and implement a Scala programming language framework, which would allow the developer to easily include more implementations of the same function in the program. The runtime support of the framework would then track the usages of the function, choose the implementation according to the context and measure performance, iteratively improving itself. The framework will be tested on real cases, e.g. the Apache Spark cluster computing system applications.
| BULEJ, Lubomír, et al. Capturing performance assumptions using stochastic performance logic. In: Proceedings of the 3rd ACM/SPEC International Conference on Performance Engineering. ACM, 2012. p. 311-322.
 HORKÝ, Vojtěch, et al. Performance regression unit testing: a case study. In: European Workshop on Performance Engineering. Springer Berlin Heidelberg, 2013. p. 149-163.
 MAREK, Lukáš, et al. Introduction to dynamic program analysis with DiSL. Science of Computer Programming, 2015, 98: 100-115.
 MAREK, Lukáš, et al. Java bytecode instrumentation made easy: The disl framework for dynamic program analysis. In: Asian Symposium on Programming Languages and Systems. Springer Berlin Heidelberg, 2012. p. 256-263.
 ZHANG, Zhuoyao; CHERKASOVA, Ludmila; LOO, Boon Thau. AutoTune: Optimizing Execution Concurrency and Resource Usage in MapReduce Workflows. In: ICAC. 2013. p. 175-181.
 Apache Spark documentation, http://spark.apache.org/docs/latest/index.htmlscala
 Scala language documentation, https://www.scala-lang.org/documentation/