Demo Data from EDBT 2026 / reviewers in the wild / expert
Yudi Zheng
dblp:70/11135
· DBLP profile ↗
17ranked-venue papers
3as first author
0since 2021 · last 2019
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 17 · 3 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
2 papers |
Runtime systems and virtual machines · 42% Program analysis · 21% Empirical software engineering · 16% |
Topics — the 9 heaviest of 9, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Empirical software engineering
benchmarking |
0.4 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Compilers and program optimization
compiler optimization |
0.4 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Runtime systems and virtual machines › virtual machine implementation
java virtual machine |
0.4 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation |
0.4 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Program analysis › dynamic analysis › instrumentation
bytecode instrumentation |
0.2 | 1 | 2015 | Accurate profiling in the presence of dynamic compilation · OOPSLA 2015 |
Runtime systems and virtual machines
dynamic compilation |
0.2 | 1 | 2015 | Accurate profiling in the presence of dynamic compilation · OOPSLA 2015 |
Program analysis › dynamic analysis
profiling |
0.2 | 1 | 2015 | Accurate profiling in the presence of dynamic compilation · OOPSLA 2015 |
Concurrent programming
concurrency primitives |
0.1 | 1 | 2019 | Renaissance: benchmarking suite for parallel applications on the JVM · PLDI 2019 |
Program analysis › static analysis › pointer analysis
escape analysis |
0.1 | 1 | 2015 | Accurate profiling in the presence of dynamic compilation · OOPSLA 2015 |
Methods — techniques the papers use, named apart from their topics
benchmarking · 0.4method inlining · 0.2escape analysis · 0.2bytecode instrumentation · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2019 | Renaissance: benchmarking suite for parallel applications on the JVMabstractEstablished benchmark suites for the Java Virtual Machine (JVM), such as DaCapo, ScalaBench, and SPECjvm2008, lack workloads that take advantage of the parallel programming abstractions and concurrency primitives offered by the JVM and the Java Class Library. However, such workloads are fundamental for understanding the way in which modern applications and data-processing frameworks use the JVM's concurrency features, and for validating new just-in-time (JIT) compiler optimizations that enable more efficient execution of such workloads. We present Renaissance, a new benchmark suite composed of modern, real-world, concurrent, and object-oriented workloads that exercise various concurrency primitives of the JVM. We show that the use of concurrency primitives in these workloads reveals optimization opportunities that were not visible with the existing workloads. We use Renaissance to compare performance of two state-of-the-art, production-quality JIT compilers (HotSpot C2 and Graal), and show that the performance differences are more significant than on existing suites such as DaCapo and SPECjvm2008. We also use Renaissance to expose four new compiler optimizations, and we analyze the behavior of several existing ones. We use Renaissance to compare performance of two state-of-the-art, production-quality JIT compilers (HotSpot C2 and Graal), and show that the performance differences are more significant than on existing suites such as DaCapo and SPECjvm2008. We also use Renaissance to expose four new compiler optimizations, and we analyze the behavior of several existing ones. Aleksandar Prokopec, Andrea Rosà, David Leopoldseder, Gilles Duboscq, Petr Tuma 0001, Martin Studener, Lubomír Bulej, Yudi Zheng, Alex Villazón, Doug Simon, Thomas Würthinger, Walter Binder |
PLDI | 8 |
| 2017 | An Empirical Study on Deoptimization in the Graal CompilerabstractManaged language platforms such as the Java Virtual Machine or the Common Language Runtime rely on a dynamic compiler to achieve high performance. Besides making optimization decisions based on the actual program execution and the underlying hardware platform, a dynamic compiler is also in an ideal position to perform speculative optimizations. However, these tend to increase the compilation costs, because unsuccessful speculations trigger deoptimization and recompilation of the affected parts of the program, wasting previous work. Even though speculative optimizations are widely used, the costs of these optimizations in terms of extra compilation work has not been previously studied. In this paper, we analyze the behavior of the Graal dynamic compiler integrated in Oracle's HotSpot Virtual Machine. We focus on situations which cause program execution to switch from machine code to the interpreter, and compare application performance using three different deoptimization strategies which influence the amount of extra compilation work done by Graal. Using an adaptive deoptimization strategy, we managed to improve the average start-up performance of benchmarks from the DaCapo, ScalaBench, and Octane benchmark suites, mostly by avoiding wasted compilation work. On a single-core system, we observed an average speed-up of 6.4% for the DaCapo and ScalaBench workloads, and a speed-up of 5.1% for the Octane workloads; the improvement decreases with an increasing number of available CPU cores. We also find that the choice of a deoptimization strategy has negligible impact on steady-state performance. This indicates that the cost of speculation matters mainly during start-up, where it can disturb the delicate balance between executing the program and the compiler, but is quickly amortized in steady state. Yudi Zheng, Lubomír Bulej, Walter Binder |
ECOOP | 1 |
| 2016 | Adaptable Runtime Monitoring for the Java Virtual Machine
Andrea Rosà, Yudi Zheng, Haiyang Sun 0003, Omar Javed, Walter Binder |
ISoLA (2) | 2 |
| 2016 | Extended Code Coverage for AspectJ-Based Runtime Verification Tools
Omar Javed, Yudi Zheng, Andrea Rosà, Haiyang Sun 0003, Walter Binder |
RV | 2 |
| 2016 | AutoBench: Finding Workloads That You Need Using Pluggable Hybrid AnalysesabstractResearchers often rely on benchmarks to demonstrate feasibility or efficiency of their contributions. However, finding the right benchmark suite can be a daunting task - existing benchmark suites may be outdated, known to be flawed, or simply irrelevant for the proposed approach. Creating a proper benchmark suite is challenging, extremely time consuming, and also - unless it becomes widely popular - a thankless endeavor. In this paper, we introduce a novel approach to help researchers find relevant workloads for their experimental evaluation needs. Our approach relies on the huge number of open-source projects available in public repositories, and on unit testing having become best practice in software development. Using a repository crawler employing pluggable static and dynamic analyses for filtering and workload characterization, we allow users to automatically find projects with relevant workloads. Preliminary results presented here show that unit tests can provide a viable source of workloads, and that the combination of static and dynamic analyses improves the ability to identify relevant workloads that can serve as the basis for custom benchmark suites. Yudi Zheng, Andrea Rosà, Luca Salucci, Yao Li 0004, Haiyang Sun 0003, Omar Javed, Lubomír Bulej, Lydia Y. Chen, Zhengwei Qi, Walter Binder |
SANER | 1 |
| 2016 | Workload characterization of JVM languagesabstractOriginally developed with a single language in mind, the JVM is now targeted by numerous programming languages—its automatic memory management, just-in-time compilation, and adaptive optimizations—making it an attractive execution platform. However, the garbage collector, the just-in-time compiler, and other optimizations and heuristics were designed primarily with the performance of Java programs in mind. Consequently, many of the languages targeting the JVM, and especially the dynamically typed languages, are suffering from performance problems that cannot be simply solved at the JVM side. In this article, we aim to contribute to the understanding of the character of the workloads imposed on the JVM by both dynamically typed and statically typed JVM languages. To this end, we introduce a new set of dynamic metrics for workload characterization, along with an easy-to-use toolchain to collect the metrics. We apply the toolchain to applications written in six JVM languages (Java, Scala, Clojure, Jython, JRuby, and JavaScript) and discuss the findings. Given the recently identified importance of inlining for the performance of Scala programs, we also analyze the inlining behavior of the HotSpot JVM when executing bytecode originating from different JVM languages. As a result, we identify several traits in the non-Java workloads that represent potential opportunities for optimization. © 2015 The Authors. Software: Practice and Experience Published by John Wiley & Sons Ltd. Aibek Sarimbekov, Lukas Stadler, Lubomír Bulej, Andreas Sewe, Andrej Podzimek, Yudi Zheng, Walter Binder |
Softw. Pract. Exp. | 6 |
| 2015 | Analyzing Distributed Multi-platform Java and Android Applications with ShadowVM
Haiyang Sun 0003, Yudi Zheng, Lubomír Bulej, Stephen Kell, Walter Binder |
APLAS | 2 |
| 2015 | Accurate profiling in the presence of dynamic compilationabstractMany profilers based on bytecode instrumentation yield wrong results in the presence of an optimizing dynamic compiler, either due to not being aware of optimizations such as stack allocation and method inlining, or due to the inserted code disrupting such optimizations. To avoid such perturbations, we present a novel technique to make any profiler implemented at the bytecode level aware of optimizations performed by the dynamic compiler. We implement our approach in a state-of-the-art Java virtual machine and demonstrate its significance with concrete profilers. We quantify the impact of escape analysis on allocation profiling, object life-time analysis, and the impact of method inlining on callsite profiling. We illustrate how our approach enables new kinds of profilers, such as a profiler for non-inlined callsites, and a testing framework for locating performance bugs in dynamic compiler implementations. Yudi Zheng, Lubomír Bulej, Walter Binder |
OOPSLA | 1 |
| 2015 | Introduction to dynamic program analysis with DiSL
Lukás Marek, Yudi Zheng, Danilo Ansaloni, Lubomír Bulej, Aibek Sarimbekov, Walter Binder, Petr Tuma 0001 |
Sci. Comput. Program. | 2 |
| 2014 | Dynamic program analysis - Reconciling developer productivity and tool performance
Aibek Sarimbekov, Yudi Zheng, Danilo Ansaloni, Lubomír Bulej, Lukás Marek, Walter Binder, Petr Tuma 0001, Zhengwei Qi |
Sci. Comput. Program. | 2 |
| 2013 | Enabling Modularity and Re-use in Dynamic Program Analysis Tools for the Java Virtual Machine
Danilo Ansaloni, Stephen Kell, Yudi Zheng, Lubomír Bulej, Walter Binder, Petr Tuma 0001 |
ECOOP | 3 |
| 2013 | ShadowVM: robust and comprehensive dynamic program analysis for the java platformabstractDynamic analysis tools are often implemented using instrumentation, particularly on managed runtimes including the Java Virtual Machine (JVM). Performing instrumentation robustly is especially complex on such runtimes: existing frameworks offer limited coverage and poor isolation, while previous work has shown that apparently innocuous instrumentation can cause deadlocks or crashes in the observed application. This paper describes ShadowVM, a system for instrumentation-based dynamic analyses on the JVM which combines a number of techniques to greatly improve both isolation and coverage. These centre on the offload of analysis to a separate process; we believe our design is the first system to enable genuinely full bytecode coverage on the JVM. We describe a working implementation, and use a case study to demonstrate its improved coverage and to evaluate its runtime overhead. Lukás Marek, Stephen Kell, Yudi Zheng, Lubomír Bulej, Walter Binder, Petr Tuma 0001, Danilo Ansaloni, Aibek Sarimbekov, Andreas Sewe |
GPCE | 3 |
| 2013 | An Automation-Assisted Empirical Study on Lock Usage for Concurrent ProgramsabstractNowadays concurrent programs are becoming more and more important with the development of hardware and network technologies. However, it is not easy for programmers to write reliable concurrent programs. Concurrency characteristics such as thread-interleaving make it difficult to debug or maintain concurrent programs. Although there are lots of research work on concurrency such as multi-thread testing tools, concurrent program verification and data race detection, all of them leave open problems. For instance, some are not scalable enough for large real world applications and some may report false warnings. Since locks are widely used to protect shared memory, it is beneficial for both programmers and tool designers in all fields to have a good understanding of common lock usage patterns in real world concurrent programs. This paper reports an empirical study on lock usage in concurrent programs. It is based on our automatic lock analysis tool called LUPA. The study analyzes how lock is used in concurrent programs and how lock usage changes throughout the product environment. In this study, four representative concurrent programs (Apache httpd, Mysql, Aget, Pbzip2) are selected, of which both lock manifestation and lock usage pattern in different versions are studied. This study reveals some interesting findings including but not limited to: (1) about 80.5% of the lock related functions acquire only one lock, (2) simple lock patterns account for 54.5% of all lock usage in real world applications, (3) only 12 out of 527 detected patterns belong to condition lock pattern which may lead to vulnerabilities easily, (4) only 0.65% of the functions are lock related. Additionally, a potential bug caused by problematic locking pattern is found. Zhengwei Qi, Shiqiu Huang, Chengcheng Xiang, Yudi Zheng, Yin Wang 0001, Haibing Guan |
ICSM | 5 |
| 2013 | A comprehensive toolchain for workload characterization across JVM languagesabstractThe Java Virtual Machine (JVM) today hosts implementations of numerous languages. To achieve high performance, JVM implementations rely on heuristics in choosing compiler optimizations and adapting garbage collection behavior. Historically, these heuristics have been tuned to suit the dynamics of Java programs only. This leads to unnecessarily poor performance in case of non-Java languages, which often exhibit systematic differences in workload behavior. Dynamic metrics characterizing the workload help to identify and quantify useful optimizations, but so far, no cohesive suite of metrics has adequately covered properties that vary systematically between Java and non-Java workloads. We present a suite of such metrics, justifying our choice with reference to a range of guest languages. These metrics are implemented on a common portable infrastructure which ensures ease of deployment and customization. Aibek Sarimbekov, Andreas Sewe, Stephen Kell, Yudi Zheng, Walter Binder, Lubomír Bulej, Danilo Ansaloni |
PASTE | 4 |
| 2013 | Introduction to dynamic program analysis with DiSLabstractDiSL is a new domain-specific language for bytecode instrumentation with complete bytecode coverage. It reconciles expressiveness and efficiency of low-level bytecode manipulation libraries with a convenient, high-level programming model inspired by aspect-oriented programming. This paper summarizes the language features of DiSL and gives a brief overview of several dynamic program analysis tools that were ported to DiSL. DiSL is available as open-source under the Apache 2.0 license. Lukás Marek, Yudi Zheng, Danilo Ansaloni, Lubomír Bulej, Aibek Sarimbekov, Walter Binder, Zhengwei Qi |
ICPE | 2 |
| 2013 | A refined decompiler to generate C code with high readabilityabstractSUMMARY As a key part of reverse engineering, decompilation plays a very important role in software security and maintenance. A number of tools, such as Boomerang and IDA Hex_rays, have been developed to translate executable programs into source code in a relatively high‐level language. Unfortunately, most existing decompilation tools suffer from low accuracy in identifying variables, functions, and composite structures, resulting in poor readability. To address these limitations, we present a practical decompiler called C‐Decompiler for Windows C programs that (i) uses a shadow stack to perform refined data flow analysis, (ii) adopts inter‐basic‐block register propagation to reduce redundant variables, and (iii) recognizes library (i.e., Standard Template Library) functions by signatures. We evaluate and compare the decompilation quality of C‐Decompiler with two existing tools, Boomerang and IDA Hex_rays, considering four aspects: function analysis, variable expansion rate, total percentage reduction, and cyclomatic complexity. Our experimental results show that on average, C‐Decompiler has the highest total percentage reduction of 55.91%, lowest variable expansion rate of 55.79%, and the same cyclomatic complexity as the original source code for each considered application. Furthermore, in our experiments, C‐Decompiler is able to recognize functions with a lower false positive and false negative rate than the other decompilers. A case study and our evaluation results confirm that C‐Decompiler is a practical tool to produce highly readable C‐style code. Copyright © 2012 John Wiley & Sons, Ltd. Gengbiao Chen, Zhengwei Qi, Shiqiu Huang, Kangqi Ni, Yudi Zheng, Walter Binder, Haibing Guan |
Softw. Pract. Exp. | 5 |
| 2012 | Java Bytecode Instrumentation Made Easy: The DiSL Framework for Dynamic Program Analysis
Lukás Marek, Yudi Zheng, Danilo Ansaloni, Aibek Sarimbekov, Walter Binder, Petr Tuma 0001, Zhengwei Qi |
APLAS | 2 |