Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Marija Selakovic

dblp:167/0216 · DBLP profile ↗
← Back
4ranked-venue papers
4as first author
0since 2021 · last 2018
0000-0001-9508-5868ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 4 · 4 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
4 papers
Software testing · 42% Empirical software engineering · 16% Debugging and program repair · 14%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Performance modeling and evaluation · 100%

Topics — the 9 heaviest of 10, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Software testing
test generation
0.312018
Test generation for higher-order functions in dynamic languages · Proc. ACM Program. Lang. 2018
Software testing
test oracle
0.312018
Test generation for higher-order functions in dynamic languages · Proc. ACM Program. Lang. 2018
Performance modeling and evaluation
profiling
0.312017
An actionable performance profiler for optimizing the order of evaluations · ISSTA 2017
Empirical software engineering
mining software repositories
0.212016
Performance issues and optimizations in JavaScript: an empirical study · ICSE 2016
Debugging and program repair
automated program repair
0.212015
Poster: Automatically Fixing Real-World JavaScript Performance Bugs · ICSE (2) 2015
Software maintenance and evolution
software evolution
0.122016
Performance issues and optimizations in JavaScript: an empirical study · ICSE 2016
Poster: Automatically Fixing Real-World JavaScript Performance Bugs · ICSE (2) 2015
Programming languages and type systems
dynamic languages
0.112018
Test generation for higher-order functions in dynamic languages · Proc. ACM Program. Lang. 2018
Programming languages and type systems › dynamic languages
javascript
0.112018
Test generation for higher-order functions in dynamic languages · Proc. ACM Program. Lang. 2018
Compilers and program optimization
program transformation
0.112017
An actionable performance profiler for optimizing the order of evaluations · ISSTA 2017

Methods — techniques the papers use, named apart from their topics

statistical significance testing · 0.6dynamic analysis · 0.6type inference · 0.3iterative improvement · 0.3callback generation · 0.3performance measurement · 0.2empirical study · 0.2static analysis · 0.2fix pattern mining · 0.2
YearPublicationVenuePosition
2018 Test generation for higher-order functions in dynamic languages
abstract
Test generation has proven to provide an effective way of identifying programming errors. Unfortunately, current test generation techniques are challenged by higher-order functions in dynamic languages, such as JavaScript functions that receive callbacks. In particular, existing test generators suffer from the unavailability of statically known type signatures, do not provide functions or provide only trivial functions as inputs, and ignore callbacks triggered by the code under test. This paper presents LambdaTester, a novel test generator that addresses the specific problems posed by higher-order functions in dynamic languages. The approach automatically infers at what argument position a method under test expects a callback, generates and iteratively improves callback functions given as input to this method, and uses novel test oracles that check whether and how callback functions are invoked. We apply LambdaTester to test 43 higher-order functions taken from 13 popular JavaScript libraries. The approach detects unexpected behavior in 12 of the 13 libraries, many of which are missed by a state-of-the-art test generator.
Marija Selakovic, Michael Pradel, Rezwana Karim, Frank Tip
Proc. ACM Program. Lang.1
2017 An actionable performance profiler for optimizing the order of evaluations
abstract
The efficiency of programs often can be improved by applying rel- atively simple changes. To find such optimization opportunities, developers either rely on manual performance tuning, which is time-consuming and requires expert knowledge, or on traditional profilers, which show where resources are spent but not how to optimize the program. This paper presents a profiler that provides actionable advice, by not only finding optimization opportunities but by also suggesting code transformations that exploit them. Specifically, we focus on optimization opportunities related to the order of evaluating subexpressions that are part of a decision made by the program. To help developers find such reordering opportuni- ties, we present DecisionProf, a dynamic analysis that automatically identifies the optimal order, for a given input, of checks in logical expressions and in switch statements. The key idea is to assess the computational costs of all possible orders, to find the optimal order, and to suggest a code transformation to the developer only if reordering yields a statistically significant performance improve- ment. Applying DecisionProf to 43 real-world JavaScript projects reveals 52 beneficial reordering opportunities. Optimizing the code as proposed by DecisionProf reduces the execution time of indi- vidual functions between 2.5% and 59%, and leads to statistically significant application-level performance improvements that range between 2.5% and 6.5%.
Marija Selakovic, Thomas Glaser, Michael Pradel
ISSTA1
2016 Performance issues and optimizations in JavaScript: an empirical study
abstract
As JavaScript is becoming increasingly popular, the performance of JavaScript programs is crucial to ensure the responsiveness and energy-efficiency of thousands of programs. Yet, little is known about performance issues that developers face in practice and they address these issues. This paper presents an empirical study of 98 fixed performance issues from 16 popular client-side and server-side JavaScript projects. We identify eight root causes of issues and show that inefficient usage of APIs is the most prevalent root cause. Furthermore, we find that most issues are addressed by optimizations that modify only a few lines of code, without significantly affecting the complexity of the source code. By studying the performance impact of optimizations on several versions of the SpiderMonkey and V8 engines, we find that only 42.68% of all optimizations improve performance consistently across all versions of both engines. Finally, we observe that many optimizations are instances of patterns applicable across projects, as evidenced by 139 previously unknown optimization opportunities that we find based on the patterns identified during the study. The results of the study help application developers to avoid common mistakes, researchers to develop performance-related techniques that address relevant problems, and engine developers to address prevalent bottleneck patterns.
Marija Selakovic, Michael Pradel
ICSE1
2015 Poster: Automatically Fixing Real-World JavaScript Performance Bugs
abstract
Programs often suffer from poor performance that can be fixed by relatively simple changes. Currently, developers either manually identify and fix such performance problems, or they rely on compilers to optimize their code. Unfortunately, manually fixing performance bugs is non-trivial, and compilers are limited to a predefined set of optimizations. This paper presents an approach for automatically finding and fixing performance bugs in JavaScript programs. To focus our work on relevant problems, we study 37 real-world performance bug fixes from eleven popular JavaScript projects and identify several recurring fix patterns. Based on the results of the study, we present a static analysis that identifies occurrences of common fix patterns and a fix generation technique that proposes to transform a given program into a more efficient program. Applying the fix generation technique to three libraries with known performance bugs yields fixes that are equal or equivalent to those proposed by the developers, and that lead to speedups between 10% and 25%.
Marija Selakovic, Michael Pradel
ICSE (2)1