A proxy architecture for reliable multicast in heterogeneous environments
MULTIMEDIA '98 Proceedings of the sixth ACM international conference on Multimedia
Effective synchronization removal for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
A parameterized type system for race-free Java programs
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Java Thread Programming
The Java Tutorial: Object-Oriented Programming for the Internet
The Java Tutorial: Object-Oriented Programming for the Internet
The Java Tutorial: A Short Course on the Basics
The Java Tutorial: A Short Course on the Basics
Optimizing the Use of High Performance Software Libraries
LCPC '00 Proceedings of the 13th International Workshop on Languages and Compilers for Parallel Computing-Revised Papers
Experiments in Composing Proxy Audio Services for Mobile Users
Middleware '01 Proceedings of the IFIP/ACM International Conference on Distributed Systems Platforms Heidelberg
Static Analyses for Eliminating Unnecessary Synchronization from Java Programs
SAS '99 Proceedings of the 6th International Symposium on Static Analysis
Person-level routing in the mobile people architecture
USITS'99 Proceedings of the 2nd conference on USENIX Symposium on Internet Technologies and Systems - Volume 2
Towards Re-engineering Legacy Systems for Assured Dynamic Adaptation
MISE '07 Proceedings of the International Workshop on Modeling in Software Engineering
FaCSim: a fast and cycle-accurate architecture simulator for embedded systems
Proceedings of the 2008 ACM SIGPLAN-SIGBED conference on Languages, compilers, and tools for embedded systems
AMOEBA-RT: Run-Time Verification of Adaptive Software
Models in Software Engineering
Hi-index | 0.00 |
The overall performance of Java programs has been significantly improved since Java emerged as a mainstream programming language. However, these improvements have revealed a second tier of performance bottlenecks. In this paper, we address one of these issues: the performance of Java piped I/O stream library. We analyze commonly used data transfer patterns in which one reader thread and one writer thread communicate via Java piped I/O streams. We consider data buffering and synchronization between these two threads, as well as the thread scheduling policy used in the Java virtual machine. Based on our observations, we propose several optimization techniques that can significantly improve Java piped I/O stream performance. We use these techniques to modify the Java piped I/O stream library. We present performance results for seven example programs from the literature that use the Java piped I/O stream library. Our methods improve the performance of the programs by over a factor of 4 on average, and by a factor of 27 in the best case.