VLDB 2026 Research / reviewers in the wild / expert
Cosmin Radoi
dblp:89/7473
· DBLP profile ↗
6ranked-venue papers
4as first author
0since 2021 · last 2015
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 5 · 3 first-authorSystems, architecture and hardware · 1 · 1 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
6 papers |
Concurrent programming · 30% Program analysis · 28% Software maintenance and evolution · 18% | |
| Computer architecture, parallel and distributed computing, and storage systems
2 papers |
Parallel and multicore computing · 79% Cloud and datacenter computing · 21% |
Topics — the 13 heaviest of 14, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
static analysis |
0.4 | 3 | 2015 | Effective Techniques for Static Race Detection in Java Parallel Loops · ACM Trans. Softw. Eng. Methodol. 2015 Practical static race detection for Java parallel loops · ISSTA 2013 CARAMEL: Detecting and Fixing Performance Problems That Have Non-Intrusive Fixes · ICSE (1) 2015 |
Parallel and multicore computing
parallel programming models |
0.4 | 2 | 2015 | Are web applications ready for parallelism? · PPoPP 2015 Translating imperative code to MapReduce · OOPSLA 2014 |
Concurrent programming › concurrency bug detection
data race detection |
0.4 | 2 | 2015 | Effective Techniques for Static Race Detection in Java Parallel Loops · ACM Trans. Softw. Eng. Methodol. 2015 Practical static race detection for Java parallel loops · ISSTA 2013 |
Concurrent programming
concurrency bugs |
0.3 | 2 | 2015 | Effective Techniques for Static Race Detection in Java Parallel Loops · ACM Trans. Softw. Eng. Methodol. 2015 Retrofitting concurrency for Android applications through refactoring · SIGSOFT FSE 2014 |
Parallel and multicore computing
data parallelism |
0.2 | 1 | 2015 | Are web applications ready for parallelism? · PPoPP 2015 |
Cloud and datacenter computing › datacenter services › online service systems › internet services
web applications |
0.2 | 1 | 2015 | Are web applications ready for parallelism? · PPoPP 2015 |
Software maintenance and evolution › refactoring
concurrency refactoring |
0.2 | 1 | 2014 | Retrofitting concurrency for Android applications through refactoring · SIGSOFT FSE 2014 |
Compilers and program optimization
program transformation |
0.2 | 1 | 2014 | Translating imperative code to MapReduce · OOPSLA 2014 |
Software maintenance and evolution
refactoring |
0.2 | 1 | 2014 | Retrofitting concurrency for Android applications through refactoring · SIGSOFT FSE 2014 |
Parallel and multicore computing › data-parallel programming
mapreduce |
0.2 | 1 | 2014 | Translating imperative code to MapReduce · OOPSLA 2014 |
Program analysis › concurrent program analysis
static race detection |
0.2 | 1 | 2013 | Practical static race detection for Java parallel loops · ISSTA 2013 |
Empirical software engineering
developer studies |
0.1 | 1 | 2015 | Are web applications ready for parallelism? · PPoPP 2015 |
Programming languages and type systems › concurrent programming languages
parallel language constructs |
0.0 | 1 | 2013 | Practical static race detection for Java parallel loops · ISSTA 2013 |
Methods — techniques the papers use, named apart from their topics
static analysis · 0.6survey · 0.4performance characterization · 0.4rewrite rules · 0.4group-by operations · 0.4fold operations · 0.4data flow analysis · 0.2points-to static analysis · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2015 | CARAMEL: Detecting and Fixing Performance Problems That Have Non-Intrusive FixesabstractPerformance bugs are programming errors that slow down program execution. While existing techniques can detect various types of performance bugs, a crucial and practical aspect of performance bugs has not received the attention it deserves: how likely are developers to fix a performance bug? In practice, fixing a performance bug can have both benefits and drawbacks, and developers fix a performance bug only when the benefits outweigh the drawbacks. Unfortunately, for many performance bugs, the benefits and drawbacks are difficult to assess accurately. This paper presents CARAMEL, a novel static technique that detects and fixes performance bugs that have non-intrusive fixes likely to be adopted by developers. Each performance bug detected by CARAMEL is associated with a loop and a condition. When the condition becomes true during the loop execution, all the remaining computation performed by the loop is wasted. Developers typically fix such performance bugs because these bugs waste computation in loops and have non-intrusive fixes: when some condition becomes true dynamically, just break out of the loop. Given a program, CARAMEL detects such bugs statically and gives developers a potential source-level fix for each bug. We evaluate CARAMEL on real-world applications, including 11 popular Java applications (e.g., Groovy, Log4J, Lucene, Struts, Tomcat, etc) and 4 widely used C/C++ applications (Chromium, GCC, Mozilla, and My SQL). CARAMEL finds 61 new performance bugs in the Java applications and 89 new performance bugs in the C/C++ applications. Based on our bug reports, developers so far have fixed 51 and 65 performance bugs in the Java and C/C++ applications, respectively. Most of the remaining bugs are still under consideration by developers. Adrian Nistor, Po-Chun Chang, Cosmin Radoi, Shan Lu 0001 |
ICSE (1) | 3 |
| 2015 | Are web applications ready for parallelism?abstractIn recent years, web applications have become pervasive. Their backbone is JavaScript, the only programming language supported by all major web browsers. Most browsers run on desktop or mobile devices with parallel hardware. However, JavaScript is by design sequential, and current web applications make little use of hardware parallelism. Are web applications ready to exploit parallel hardware? We answer the question in two steps: First, we survey 174 web developers about the potential and challenges of using parallelism. Then, we study the performance and computation shape of a set of web applications that are representative for the emerging web. Our findings indicate that emerging web applications do have latent data parallelism, and JavaScript developers' programming style is not a significant impediment to exploiting this parallelism. Cosmin Radoi, Stephan Herhut, Jaswanth Sreeram, Danny Dig |
PPoPP | 1 |
| 2015 | Effective Techniques for Static Race Detection in Java Parallel LoopsabstractDespite significant progress in recent years, the important problem of static race detection remains open. Previous techniques took a general approach and looked for races by analyzing the effects induced by low-level concurrency constructs (e.g., java.lang.Thread). But constructs and libraries for expressing parallelism at a higher level (e.g., fork-join, futures, parallel loops) are becoming available in all major programming languages. We claim that specializing an analysis to take advantage of the extra semantic information provided by the use of these constructs and libraries improves precision and scalability. We present I te R ace , a set of techniques that are specialized to use the intrinsic thread, safety, and dataflow structure of collections and of the new loop parallelism mechanism introduced in Java 8. Our evaluation shows that I te R ace is fast and precise enough to be practical. It scales to programs of hundreds of thousands of lines of code and reports very few race warnings, thus avoiding a common pitfall of static analyses. In five out of the seven case studies, I te R ace reported no false warnings. Also, it revealed six bugs in real-world applications. We reported four of them: one had already been fixed, and three were new and the developers confirmed and fixed them. Furthermore, we evaluate the effect of each specialization technique on the running time and precision of the analysis. For each application, we run the analysis under 32 different configurations. This allows to analyze each technique's effect both alone and in all possible combinations with other techniques. Cosmin Radoi, Danny Dig |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 2014 | Translating imperative code to MapReduceabstractWe present an approach for automatic translation of sequential, imperative code into a parallel MapReduce framework. Automating such a translation is challenging: imperative updates must be translated into a functional MapReduce form in a manner that both preserves semantics and enables parallelism. Our approach works by first translating the input code into a functional representation, with loops succinctly represented by fold operations. Then, guided by rewrite rules, our system searches a space of equivalent programs for an effective MapReduce implementation. The rules include a novel technique for handling irregular loop-carried dependencies using group-by operations to enable greater parallelism. We have implemented our technique in a tool called Mold. It translates sequential Java code into code targeting the Apache Spark runtime. We evaluated Mold on several real-world kernels and found that in most cases Mold generated the desired MapReduce program, even for codes with complex indirect updates. Cosmin Radoi, Stephen J. Fink, Rodric M. Rabbah, Manu Sridharan |
OOPSLA | 1 |
| 2014 | Retrofitting concurrency for Android applications through refactoringabstractRunning compute-intensive or blocking I/O operations in the UI event thread of smartphone apps can severely degrade responsiveness. Despite the fact that Android supports writing concurrent code via AsyncTask, we know little about how developers use AsyncTask to improve responsiveness. To understand how AsyncTask is used/underused/misused in practice, we rst conduct a formative study using a corpus of top 104 most popular open-source Android apps comprising 1.34M SLOC. Our study shows that even though half of the apps use AsyncTask, there are hundreds of places where they missed opportunities to encapsulate long-running operations in AsyncTask. Second, 46% of the usages are manually refactored. However, the refactored code contains concurrency bugs (such as data races) and performance bugs (concurrent code still executes sequentially). Inspired by these ndings, we designed, developed, and evaluated Asynchronizer, an automated refactoring tool that enables developers to extract long-running operations into AsyncTask. Asynchronizer uses a points-to static analysis to determine the safety of the transformation. Our empirical evaluation shows that Asynchronizer is (i) highly applicable, (ii) accurate, (iii) safer than manual refactoring (iv) it saves development eort, (v) its results have been accepted by the open-source developers. This shows that Asynchronizer is useful. Cosmin Radoi, Danny Dig |
SIGSOFT FSE | 2 |
| 2013 | Practical static race detection for Java parallel loopsabstractDespite significant progress in recent years, the important problem of static race detection remains open. Previous techniques took a general approach and looked for races by analyzing the effects induced by low-level concurrency constructs (e.g., java.lang.Thread). But constructs and libraries for expressing parallelism at a higher level (e.g., fork-join, futures, parallel loops) are becoming available in all major programming languages. Cosmin Radoi, Danny Dig |
ISSTA | 1 |