Opencj: a Research Java Static Compiler Based on Open64

Total Page:16

File Type:pdf, Size:1020Kb

Opencj: a Research Java Static Compiler Based on Open64 Opencj: A research Java static compiler based on Open64 Keqiao Yang, Zhemin Yang, Zhiwei Cao, Zeng Huang, Di Wang, Min Yang, Binyu Zang Parallel Processing Institute, Fudan University, Shanghai, China {kqyang,yangzhemin,zwcao,hz,wang di,m yang, byzang}@fudan.edu.cn Abstract bile phones due to its productivity and safety. Many op- As Java becomes more pervasive in the programming land- timization approaches have been applied to improve Java scape even in HPC applications, it is very important to pro- runtime performance. In many applications, Java’s perfor- vide optimizing compilers and more efficient runtime sys- mance is similar to other programming languages (includ- tems. To this end, we try to leverage the synergy between ing C++/Fortran)[16]. There are two ways to run Java static and dynamic optimization to exploit more optimiza- programs: running bytecode within a Java virtual machine tion chances and improve Java runtime performance espe- (JVM) or running its executable code directly. cially for server applications. This paper presents our first JVM can either interpret the Java bytecode or compile achievement of implementing a Java static compiler Opencj the bytecode into native code of the target machine. Be- which can perform fully optimization for Java applications. cause interpretation incurs a high runtime overhead, JVMs Opencj takes Java source files or class files as inputs and usually rely on compilation. The most popular compilation generates machine dependent executable code for Linux/IA32. approach is to perform dynamic or just-in-time (JIT) com- It is developed based on Open64 with some optimizations pilation, where translation from bytecode to native code is implemented for Java. Efficient support for exception han- performed just before a method is executed. To reduce the dling and virtual method call resolution fulfills the demands overhead of runtime compilation, JVM usually operates in which are imposed by the dynamic features of the Java pro- a hybrid mode, which means that bytecode of a method gramming language. Due to the same optimizer in Opencj is initially executed by an interpreter until the JVM de- and Open64, the performance gap between Java and C/C++ termines its suitability for further optimization. Examples of such systems include IBM JVM[34], Sun Hotspot com- programs can be evaluated. The evaluation of the scientific TM SciMark 2.0 benchmark suite shows they have a similar peak piler[21], Hotspot for Java 6[17], and Jalapeno˜ adaptive performance between its Java and C versions. The evalua- optimization system[2]. Nevertheless, JVMs using even the tion also illustrates that the performance of Opencj is better most sophisticated dynamic compilation strategies in their than GCJ for SPECjvm98 benchmark suite. server compiler still suffer from two serious problems, Large memory footprint and Startup overhead of JVMs. However, Categories and Subject Descriptors D.3.4 [Programming static compilation achieves greatly reduced cost of startup, Languages]: Processors-Compilers, Optimization, Code gen- reduced usage of memory, automatic sharing of code by eration the OS between applications, and easier linking with native General Terms Algorithms, Languages, Performance code. This paper introduces a static Java compiler Opencj Keywords Java, Java Static Compiler, Java Exception Han- which is developed based on Open64 compiler. Open64 is dling, Bounds Check Elimination, Synchronization Elimina- an open-source static compiler for C/C++ and Fortran with tion, Java Devirtualization excellent optimizer. Opencj benefits from Open64’s back- 1. Introduction end, especially IPA which enables us to generate advanced optimized Java native code and evaluate the performance The Java programming language enjoys widespread popu- gap between Java and C/C++. larity on different platforms ranging from servers to mo- Due to the lack of precise runtime information, it is hard to predict runtime behavior for static compilation. Although offline profiling technique has been adopted by some static Permission to make digital or hard copies of all or part of this work for personal or compilers including Open64, it may not be accurate or rep- classroom use is granted without fee provided that copies are not made or distributed resentative. As a result, compilers are forced to make con- for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute servative assumptions to preserve correctness and to avoid to lists, requires prior specific permission and/or a fee. performance degradation. So, we argue that static and dy- CGO 2009 Open64 Workshop March 22, Washington. Copyright c 2009 ACM [Open64 Workshop]. $5.00 namic optimizations are not distinct and competitive. And we try to find a way to integrate the benefits of static and nest optimizer(LNO), global optimizer(WOPT), and code dynamic optimizations to improve runtime performance. We generator (CG). These modules interact via a common tree- take DRLVM, a JVM of Apache Harmony[13], as a platform based intermediate representations, called WHIRL(Winning to reveal how to leverage static optimization benefits. Hierarchical Intermediate Representation Language). The In section 7, we picture a Java compilation framework WHIRL has five levels to facilitate the implementation of mixing the static and dynamic optimization techniques to different analysis and optimization phases. They are classi- further reduce runtime overhead. In this framework, a dy- fied as Very High, High, Mid, Low, and Very Low levels, re- namic compilation module is introduced to collect runtime spectively. And each optimization is implemented on a spe- information and apply dynamic optimizations guided by the cific level of WHIRL. For example, IPA and LNO are ap- profiling results. Besides, a complete Java runtime environ- plied to High level WHIRL while WOPT operates on Mid ment based on Harmony will be integrated into Opencj to level. further accelerate Java runtime speed. The C/C++, Java frontends are based on GNU technol- This paper makes the following contributions: ogy. The Fortran90/95 frontend is the SGI Pro64 (Cray) For- tran frontend. This paper presents the detail of Java frontend • Design and implementation of a Java static compiler in Open64 in section 3. Each frontend produces a Very High Opencj: we introduce the infrastructure of Opencj that level WHIRL for the input program units, stored as a so- compiles Java source files or Class files into optimized called .B file. This representation is available for the subse- executable code. In particular, we focus on the Java ex- quent phases. The driver of Open64 controls the execution of ception handling and some optimizations in Opencj. the compiler, deciding what modules to load and what com- • We compare the runtime performance of Java applica- pilation plan to use. The Driver is responsible for invoking tions between running in JVM and running executable the frontends, the stand-alone procedure inliner, IPA, back- code. Meanwhile we give an evaluation of the perfor- end modules and the linker. Figure 1 is the compiler execut- mance gap between Java and C in scientific applications. ing pattern. • We evaluate the performance of Opencj at Linux/IA32 comparing to GCJ 4.2.0, Harmony DRLVM and Sun hotspot of JDK 1.6. • We give a big picture of how to combine static optimiza- 3. Frontend migration tion and Java runtime technique to improve Java runtime 3.1 Java frontend performance. The C/C++ frontend of Open64 is inherited from GCC, so The rest of the paper is organized as follows. Section 2 gives the frontend of GCJ compiler which is a Java static compiler an overview of Opencj compiler. Section 3 presents the fron- of GCC is chosen to develop the Java frontend of Open64 tend migration for Open64. Section 4 describes the optimiza- when designing Opencj. In figure 1, the frontend has two tions which are designed and implemented for Java applica- modules, gspin which outputs AST of GCC as language tions. Section5 gives the experimental evaluation of Opencj. independent spin file and wgen which takes spin file as Section 6 pursues related works. Section 7 highlights the fu- input and converts it into WHIRL. The objective of gspin ture work of our research and, finally, section 8 concludes module is to keep the independency and persistency of wgen the paper. module in the compiler version updating. Spin file is equal to AST file except a few modifications in AST to remove the language dependent tree nodes, such as renaming the tree 2. Overview of Opencj node type. The main components of Opencj include the Java frontend We migrate the frontend of GCJ 4.2.0 version into Opencj. migrated from GCJ[12] and the Optimizer of Open64[25]. After GCC 4.0 version, it redefined the AST tree into The frontend is used to read Java source files or class files GENERIC and GIMPLE[20] tree for performing optimiza- and transform them into WHIRL[14] of Open64. And then tion at the tree level. The purpose of GENERIC is simply Open64 Optimizer performs optimization on the WHIRL to provide a language-independent way of representing an and generates machine dependent executable code for IA32 entire function in trees. GIMPLE is a simplified subset of or Itanium. GENERIC for use in optimization. We used to try to gener- Open64 is open sourced by Silicon Graphics Inc. from ate spin file at GIMPLE tree instead of GENERIC to benefit its SGI Pro64 compiler targeting MIPS and Itanium proces- the GCJ optimization. The evaluation of SciMark 2.0 Java sors. Open64 is a well-written, modularized, robust, state-of- benchmark shows that it caused about 30% performance the-art compiler with support for C/C++ and Fortran 77/90. degradation since some high level structure has been trans- The major modules of Open64 are the multiple language formed into low level, e.g.
Recommended publications
  • Writing R Extensions
    Writing R Extensions Version 4.2.0 Under development (2021-09-29) R Core Team This manual is for R, version 4.2.0 Under development (2021-09-29). Copyright c 1999{2021 R Core Team Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into an- other language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the R Core Team. i Table of Contents Acknowledgements ::::::::::::::::::::::::::::::::::::::::::::::::: 1 1 Creating R packages ::::::::::::::::::::::::::::::::::::::::::: 2 1.1 Package structure :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 1.1.1 The DESCRIPTION file ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 4 1.1.2 Licensing ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 1.1.3 Package Dependencies::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 9 1.1.3.1 Suggested packages:::::::::::::::::::::::::::::::::::::::::::::::::::::: 12 1.1.4 The INDEX file ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 13 1.1.5 Package subdirectories :::::::::::::::::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Java (Programming Langua a (Programming Language)
    Java (programming language) From Wikipedia, the free encyclopedialopedia "Java language" redirects here. For the natural language from the Indonesian island of Java, see Javanese language. Not to be confused with JavaScript. Java multi-paradigm: object-oriented, structured, imperative, Paradigm(s) functional, generic, reflective, concurrent James Gosling and Designed by Sun Microsystems Developer Oracle Corporation Appeared in 1995[1] Java Standard Edition 8 Update Stable release 5 (1.8.0_5) / April 15, 2014; 2 months ago Static, strong, safe, nominative, Typing discipline manifest Major OpenJDK, many others implementations Dialects Generic Java, Pizza Ada 83, C++, C#,[2] Eiffel,[3] Generic Java, Mesa,[4] Modula- Influenced by 3,[5] Oberon,[6] Objective-C,[7] UCSD Pascal,[8][9] Smalltalk Ada 2005, BeanShell, C#, Clojure, D, ECMAScript, Influenced Groovy, J#, JavaScript, Kotlin, PHP, Python, Scala, Seed7, Vala Implementation C and C++ language OS Cross-platform (multi-platform) GNU General Public License, License Java CommuniCommunity Process Filename .java , .class, .jar extension(s) Website For Java Developers Java Programming at Wikibooks Java is a computer programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few impimplementation dependencies as possible.ble. It is intended to let application developers "write once, run ananywhere" (WORA), meaning that code that runs on one platform does not need to be recompiled to rurun on another. Java applications ns are typically compiled to bytecode (class file) that can run on anany Java virtual machine (JVM)) regardless of computer architecture. Java is, as of 2014, one of tthe most popular programming ng languages in use, particularly for client-server web applications, witwith a reported 9 million developers.[10][11] Java was originallyy developed by James Gosling at Sun Microsystems (which has since merged into Oracle Corporation) and released in 1995 as a core component of Sun Microsystems'Micros Java platform.
    [Show full text]
  • Real-Time Java for Embedded Devices: the Javamen Project*
    REAL-TIME JAVA FOR EMBEDDED DEVICES: THE JAVAMEN PROJECT* A. Borg, N. Audsley, A. Wellings The University of York, UK ABSTRACT: Hardware Java-specific processors have been shown to provide the performance benefits over their software counterparts that make Java a feasible environment for executing even the most computationally expensive systems. In most cases, the core of these processors is a simple stack machine on which stack operations and logic and arithmetic operations are carried out. More complex bytecodes are implemented either in microcode through a sequence of stack and memory operations or in Java and therefore through a set of bytecodes. This paper investigates the Figure 1: Three alternatives for executing Java code (take from (6)) state-of-the-art in Java processors and identifies two areas of improvement for specialising these processors timeliness as a key issue. The language therefore fails to for real-time applications. This is achieved through a allow more advanced temporal requirements of threads combination of the implementation of real-time Java to be expressed and virtual machine implementations components in hardware and by using application- may behave unpredictably in this context. For example, specific characteristics expressed at the Java level to whereas a basic thread priority can be specified, it is not drive a co-design strategy. An implementation of these required to be observed by a virtual machine and there propositions will provide a flexible Ravenscar- is no guarantee that the highest priority thread will compliant virtual machine that provides better preempt lower priority threads. In order to address this performance while still guaranteeing real-time shortcoming, two competing specifications have been requirements.
    [Show full text]
  • Zing:® the Best JVM for the Enterprise
    PRODUCT DATA SHEET Zing:® ZING The best JVM for the enterprise Zing Runtime for Java A JVM that is compatible and compliant The Performance Standard for Low Latency, with the Java SE specification. Zing is a Memory-Intensive or Interactive Applications better alternative to your existing JVM. INTRODUCING ZING Zing Vision (ZVision) Today Java is ubiquitous across the enterprise. Flexible and powerful, Java is the ideal choice A zero-overhead, always-on production- for development teams worldwide. time monitoring tool designed to support rapid troubleshooting of applications using Zing. Zing builds upon Java’s advantages by delivering a robust, highly scalable Java Virtual Machine ReadyNow! Technology (JVM) to match the needs of today’s real time enterprise. Zing is the best JVM choice for all Solves Java warm-up problems, gives Java workloads, including low-latency financial systems, SaaS or Cloud-based deployments, developers fine-grained control over Web-based eCommerce applications, insurance portals, multi-user gaming platforms, Big Data, compilation and allows DevOps to save and other use cases -- anywhere predictable Java performance is essential. and reuse accumulated optimizations. Zing enables developers to make effective use of memory -- without the stalls, glitches and jitter that have been part of Java’s heritage, and solves JVM “warm-up” problems that can degrade ZING ADVANTAGES performance at start up. With improved memory-handling and a more stable, consistent runtime Takes advantage of the large memory platform, Java developers can build and deploy richer applications incorporating real-time data and multiple CPU cores available in processing and analytics, driving new revenue and supporting new business innovations.
    [Show full text]
  • Apache Harmony Project Tim Ellison Geir Magnusson Jr
    The Apache Harmony Project Tim Ellison Geir Magnusson Jr. Apache Harmony Project http://harmony.apache.org TS-7820 2007 JavaOneSM Conference | Session TS-7820 | Goal of This Talk In the next 45 minutes you will... Learn about the motivations, current status, and future plans of the Apache Harmony project 2007 JavaOneSM Conference | Session TS-7820 | 2 Agenda Project History Development Model Modularity VM Interface How Are We Doing? Relevance in the Age of OpenJDK Summary 2007 JavaOneSM Conference | Session TS-7820 | 3 Agenda Project History Development Model Modularity VM Interface How Are We Doing? Relevance in the Age of OpenJDK Summary 2007 JavaOneSM Conference | Session TS-7820 | 4 Apache Harmony In the Beginning May 2005—founded in the Apache Incubator Primary Goals 1. Compatible, independent implementation of Java™ Platform, Standard Edition (Java SE platform) under the Apache License 2. Community-developed, modular architecture allowing sharing and independent innovation 3. Protect IP rights of ecosystem 2007 JavaOneSM Conference | Session TS-7820 | 5 Apache Harmony Early history: 2005 Broad community discussion • Technical issues • Legal and IP issues • Project governance issues Goal: Consolidation and Consensus 2007 JavaOneSM Conference | Session TS-7820 | 6 Early History Early history: 2005/2006 Initial Code Contributions • Three Virtual machines ● JCHEVM, BootVM, DRLVM • Class Libraries ● Core classes, VM interface, test cases ● Security, beans, regex, Swing, AWT ● RMI and math 2007 JavaOneSM Conference | Session TS-7820 |
    [Show full text]
  • IT Acronyms.Docx
    List of computing and IT abbreviations /.—Slashdot 1GL—First-Generation Programming Language 1NF—First Normal Form 10B2—10BASE-2 10B5—10BASE-5 10B-F—10BASE-F 10B-FB—10BASE-FB 10B-FL—10BASE-FL 10B-FP—10BASE-FP 10B-T—10BASE-T 100B-FX—100BASE-FX 100B-T—100BASE-T 100B-TX—100BASE-TX 100BVG—100BASE-VG 286—Intel 80286 processor 2B1Q—2 Binary 1 Quaternary 2GL—Second-Generation Programming Language 2NF—Second Normal Form 3GL—Third-Generation Programming Language 3NF—Third Normal Form 386—Intel 80386 processor 1 486—Intel 80486 processor 4B5BLF—4 Byte 5 Byte Local Fiber 4GL—Fourth-Generation Programming Language 4NF—Fourth Normal Form 5GL—Fifth-Generation Programming Language 5NF—Fifth Normal Form 6NF—Sixth Normal Form 8B10BLF—8 Byte 10 Byte Local Fiber A AAT—Average Access Time AA—Anti-Aliasing AAA—Authentication Authorization, Accounting AABB—Axis Aligned Bounding Box AAC—Advanced Audio Coding AAL—ATM Adaptation Layer AALC—ATM Adaptation Layer Connection AARP—AppleTalk Address Resolution Protocol ABCL—Actor-Based Concurrent Language ABI—Application Binary Interface ABM—Asynchronous Balanced Mode ABR—Area Border Router ABR—Auto Baud-Rate detection ABR—Available Bitrate 2 ABR—Average Bitrate AC—Acoustic Coupler AC—Alternating Current ACD—Automatic Call Distributor ACE—Advanced Computing Environment ACF NCP—Advanced Communications Function—Network Control Program ACID—Atomicity Consistency Isolation Durability ACK—ACKnowledgement ACK—Amsterdam Compiler Kit ACL—Access Control List ACL—Active Current
    [Show full text]
  • Java in Embedded Linux Systems
    Java in Embedded Linux Systems Java in Embedded Linux Systems Thomas Petazzoni / Michael Opdenacker Free Electrons http://free-electrons.com/ Created with OpenOffice.org 2.x Java in Embedded Linux Systems © Copyright 2004-2007, Free Electrons, Creative Commons Attribution-ShareAlike 2.5 license http://free-electrons.com Sep 15, 2009 1 Rights to copy Attribution ± ShareAlike 2.5 © Copyright 2004-2008 You are free Free Electrons to copy, distribute, display, and perform the work [email protected] to make derivative works to make commercial use of the work Document sources, updates and translations: Under the following conditions http://free-electrons.com/articles/java Attribution. You must give the original author credit. Corrections, suggestions, contributions and Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license translations are welcome! identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. License text: http://creativecommons.org/licenses/by-sa/2.5/legalcode Java in Embedded Linux Systems © Copyright 2004-2007, Free Electrons, Creative Commons Attribution-ShareAlike 2.5 license http://free-electrons.com Sep 15, 2009 2 Best viewed with... This document is best viewed with a recent PDF reader or with OpenOffice.org itself! Take advantage of internal
    [Show full text]
  • Oracle Lifetime Support Policy for Oracle Fusion Middleware Guide
    ORACLE INFORMATION-DRIVEN SUPPORT Oracle Lifetime Support Policy Oracle Fusion Middleware Oracle Fusion Middleware 8 Oracle Fusion Middleware Releases 8 Application Development Tools 9 Oracle’s Application Development Tools 9 Oracle’s GraalVM Enterprise Releases 9 Oracle Cloud Application Foundation Releases 10 Oracle’s Sun and Glassfish Application Server Releases 12 Oracle’s Java Releases 13 Oracle’s Sun JDK Releases 13 Oracle’s Blockchain Platform Releases 14 Business Intelligence 14 Oracle Business Intelligence EE Releases 14 Oracle’s HyperRoll Releases 21 Oracle’s Siebel Technology Releases 22 Oracle’s Siebel Applications Releases 22 Oracle Big Data Discovery Releases 23 Oracle Endeca Information Discovery Releases 23 Oracle’s Endeca Releases 25 Master Data Management and Data Integrator 26 Oracle’s GoldenGate Releases 26 Oracle Data Integrator Releases 28 Oracle Data Integrator (Formerly Sunopsis) Releases 28 Oracle’s Sun Master Data Management and Data Integrator Releases 28 Oracle’s Silver Creek and EDQP Releases 29 Oracle's Datanomic and EDQ Releases 30 Oracle WebCenter Portal Releases 31 Oracle’s Sun Portal Releases 32 Oracle WebCenter Content Releases 32 Oracle’s Stellent Releases (Enterprise Content Management) 34 Oracle’s Captovation Releases (Enterprise Content Management) 35 Oracle WebCenter Sites Releases 36 Oracle FatWire Releases (WebCenter Sites) 36 Oracle Identity and Access Management Releases 37 Oracle’s Bharosa Releases 40 Oracle’s Passlogix Releases 41 Oracle’s Bridgestream Releases 41 Oracle’s Oblix Releases 42
    [Show full text]
  • Paper Discusses the Advantages and Disadvantages of Each Approach As Well As Specific Experiences of Using Java in a Commercial Tape Drive Project
    Java and Real Time Storage Applications Gary Mueller 195 Garnet St Broomfield, CO 80020-2203 [email protected] Tel: +1-303-465-4279 Janet Borzuchowski Storage Technology Corporation 2270 South 88th Street M. S. 4272 Louisville CO 80028 [email protected] Tel: +1-303-673-8297 Abstract Storage systems have storage devices which run real time embedded software. Most storage devices use C and occasionally C++ to manage and control the storage device. Software for the storage device must meet the time and resource constraints of the storage device. The prevailing wisdom in the embedded world is that objects and in particular Java only work for simple problems and can not handle REAL problems, are too slow and can not handle time critical processing and are too big and can’t fit in memory constrained systems. Even though Java's roots are in the embedded application area, Java is more widely used in the desktop and enterprise environment. Use of Java in embedded real time environments where performance and size constraints rule is much less common. Java vendors offer a dizzying array of options, products and choices for real time storage applications. Four main themes emerge when using Java in a real time storage application; compiling Java, executing Java with a software Java Virtual Machine (JVM), executing Java with a hardware JVM and replacing a real time operating system (RTOS) with a JVM. The desktop and enterprise environment traditionally run Java using a software JVM that has been ported to a particular platform. The JVM runs as a task or process hosted by the platform operating system.
    [Show full text]
  • Thread Scheduling in Multi-Core Operating Systems Redha Gouicem
    Thread Scheduling in Multi-core Operating Systems Redha Gouicem To cite this version: Redha Gouicem. Thread Scheduling in Multi-core Operating Systems. Computer Science [cs]. Sor- bonne Université, 2020. English. tel-02977242 HAL Id: tel-02977242 https://hal.archives-ouvertes.fr/tel-02977242 Submitted on 24 Oct 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Ph.D thesis in Computer Science Thread Scheduling in Multi-core Operating Systems How to Understand, Improve and Fix your Scheduler Redha GOUICEM Sorbonne Université Laboratoire d’Informatique de Paris 6 Inria Whisper Team PH.D.DEFENSE: 23 October 2020, Paris, France JURYMEMBERS: Mr. Pascal Felber, Full Professor, Université de Neuchâtel Reviewer Mr. Vivien Quéma, Full Professor, Grenoble INP (ENSIMAG) Reviewer Mr. Rachid Guerraoui, Full Professor, École Polytechnique Fédérale de Lausanne Examiner Ms. Karine Heydemann, Associate Professor, Sorbonne Université Examiner Mr. Etienne Rivière, Full Professor, University of Louvain Examiner Mr. Gilles Muller, Senior Research Scientist, Inria Advisor Mr. Julien Sopena, Associate Professor, Sorbonne Université Advisor ABSTRACT In this thesis, we address the problem of schedulers for multi-core architectures from several perspectives: design (simplicity and correct- ness), performance improvement and the development of application- specific schedulers.
    [Show full text]
  • Java Performance Mysteries
    ITM Web of Conferences 7 09015 , (2016) DOI: 10.1051/itmconf/20160709015 ITA 2016 Java Performance Mysteries Pranita Maldikar, San-Hong Li and Kingsum Chow [email protected], {sanhong.lsh, kingsum.kc}@alibaba-inc.com Abstract. While assessing software performance quality in the cloud, we noticed some significant performance variation of several Java applications. At a first glance, they looked like mysteries. To isolate the variation due to cloud, system and software configurations, we designed a set of experiments and collected set of software performance data. We analyzed the data to identify the sources of Java performance variation. Our experience in measuring Java performance may help attendees in selecting the trade-offs in software configurations and load testing tool configurations to obtain the software quality measurements they need. The contributions of this paper are (1) Observing Java performance mysteries in the cloud, (2) Identifying the sources of performance mysteries, and (3) Obtaining optimal and reproducible performance data. 1 Introduction into multiple tiers like, client tier, middle-tier and data tier. For testing a Java EE workload theclient tier would Java is both a programming language and a platform. be a load generator machine using load generator Java as a programming language follows object-oriented software like Faban [2]. This client tier will consist of programming model and it requires Java Virtual users that will send the request to the application server Machine (Java Interpreter) to run Java programs. Java as or the middle tier.The middle tier contains the entire a platform is an environment on which we can deploy business logic for the enterprise application.
    [Show full text]
  • Performance Comparison of Java and C++ When Sorting Integers and Writing/Reading Files
    Bachelor of Science in Computer Science February 2019 Performance comparison of Java and C++ when sorting integers and writing/reading files. Suraj Sharma Faculty of Computing, Blekinge Institute of Technology, 371 79 Karlskrona, Sweden This thesis is submitted to the Faculty of Computing at Blekinge Institute of Technology in partial fulfilment of the requirements for the degree of Bachelor of Science in Computer Sciences. The thesis is equivalent to 20 weeks of full-time studies. The authors declare that they are the sole authors of this thesis and that they have not used any sources other than those listed in the bibliography and identified as references. They further declare that they have not submitted this thesis at any other institution to obtain a degree. Contact Information: Author(s): Suraj Sharma E-mail: [email protected] University advisor: Dr. Prashant Goswami Department of Creative Technologies Faculty of Computing Internet : www.bth.se Blekinge Institute of Technology Phone : +46 455 38 50 00 SE-371 79 Karlskrona, Sweden Fax : +46 455 38 50 57 ii ABSTRACT This study is conducted to show the strengths and weaknesses of C++ and Java in three areas that are used often in programming; loading, sorting and saving data. Performance and scalability are large factors in software development and choosing the right programming language is often a long process. It is important to conduct these types of direct comparison studies to properly identify strengths and weaknesses of programming languages. Two applications were created, one using C++ and one using Java. Apart from a few syntax and necessary differences, both are as close to being identical as possible.
    [Show full text]