Optimizing the java piped i/o stream library for performance

  • Authors:
  • Ji Zhang;Jaejin Lee;Philip K. McKinley

  • Affiliations:
  • Department of Computer Science and Engineering, Software Engineering and Network Systems Laboratory, Michigan State University, East Lansing, MI;School of Computer Science and Engineering, Seoul National University, Seoul, Korea;Department of Computer Science and Engineering, Software Engineering and Network Systems Laboratory, Michigan State University, East Lansing, MI

  • Venue:
  • LCPC'02 Proceedings of the 15th international conference on Languages and Compilers for Parallel Computing
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.