9: Points de croisement avec pour chaque intervalle la meilleure implémentation (Java ou JNI) et l'accélération moyenne obtenue Chapitre 7 ,
art : une analyse comparative Ce chapitre propose un état de l'art focalisé essentiellement sur les techniques d'optimisation de code applicatif Java pour architectures généralistes du type, pp.86-64 ,
Il s'agit d'un critère industriel qui touche à la rentabilité ou à la propriété intellectuelle. Il peut être bloquant concernant l'utilisation de JVM propriétaires haute-performances comme la JVM Zing ,
Il s'agit d'un critère central qui garantit que la solution employée est robuste et pérenne. Ce critère regarde par exemple si la solution est toujours maintenue et distingue les projets de recherche, pouvant être de nature expérimentale, des solutions intégrées en production ,
Ce critère prend en considération la compatibilité de la solution avec le code existant et les diverses dicultés techniques d'intégration pouvant survenir ,
Ce critère regarde l'impact sur les performances de la solution employée ,
Graal il semblerait que l'apport de la compilation AOT dans HotSpot an d'accélérer le démarrage des applications soit une piste envisagée, La JVM Zing (cf. Section 2.2.1.2 Chap. 2) implémente déjà une technologie baptisée ReadyNow ,
et comme rappelé en introduction de chapitre, on s'intéresse essentiellement aux optimisations pouvant être eectuées coté développeurs Java. On ignore donc l'état de l'art sur les techniques et algorithmes d'optimisations intégrés au sein des compilateurs dynamiques 9 ,
optimisation dynamique sont divisées en deux catégories La première, traitée Section 7.2.1 inclut les techniques permettant d'avoir un contrôle direct sur le code généré, la seconde, traitée Section 7.2.2 ,
Chapitre 6 propose l'implémentation d'intrinsic dans le compilateur dynamique C2 de la JVM HotSpot. Les intrinsics sont des méthodes particulières pour lesquelles, le code généré par le compilateur est prédéni et n'est pas à la charge de ce dernier. Leur mécanisme est ainsi, comme étayé dans, une des modalités permettant de réconcilier programmation haut niveau et programmation bas niveau. L'implémentation d'intrinsic est très ecace pour trois raisons ,
utilisation des snippets concerne la conversion double vers int Section 6.2.1, les spécications du bytecode d2i eectuant cette conversion peuvent limiter les performances. La classe AMD64ConvertSnippets dénit ainsi le snippet d2i eectuant cette conversion avec les spécications de l'instruction x86 CVTTSD2SI, Comme vu Chapitre, vol.6 ,
Hoste et Al. ont souligné l'importance des réglages du JIT pour les performances et ont proposé un outil pour la recherche automatique d'optimums, Les expérimentations menées sont spéciques à la machine virtuelle Jikes RVM 12 ,
96 4.16 Performance du dispatch d'interface en fonction de l'index de l'interface, Performance des états stables d'une distribution, p.98 ,
Analyse comparative multi-critère des techniques d'optimisation de code ,
Auto-vectorization in GCC. https://gcc.gnu.org/projects/tree-ssa/ vectorization.html (dernière accès, pp.1-07 ,
A "No Stalls Java that starts up fast and stays fast, 2015. ,
The best JVM for the enterprise AZUL Systems, pp.1-07, 2015. ,
Applying source level auto-vectorization to Aparapi Java, Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform Virtual machines, Languages, and Tools, PPPJ '14, p.122132, 2014. ,
DOI : 10.1145/2647508.2647519
The Jikes Research Virtual Machine project: Building an open-source research community, IBM Systems Journal, vol.44, issue.2, p.399417, 2005. ,
DOI : 10.1147/sj.442.0399
Towards Native Performance using Java : Optimizing a simplied DGEMV operation, 2011. ,
Java annotation-aware just-in-time (AJIT) complilation system, Proceedings of the ACM 1999 conference on Java Grande , JAVA '99, p.142151, 1999. ,
DOI : 10.1145/304065.304115
Trace-based compilation in execution environments without interpreters, Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java, PPPJ '10, p.5968, 2010. ,
DOI : 10.1145/1852761.1852771
Implicit java array bounds checking on 64-bit architecture, Proceedings of the 18th annual international conference on Supercomputing , ICS '04, p.227236, 2004. ,
DOI : 10.1145/1006209.1006242
A note on native level 1 BLAS in Java. Concurrency -Practice and Experience, p.10911099, 1997. ,
Myths and realities, ACM SIGMETRICS Performance Evaluation Review, vol.32, issue.1, pp.25-36, 2004. ,
DOI : 10.1145/1012888.1005693
Compiling Java with GCJ, Linux Journal, issue.1054, 2003. ,
Improvements to graph coloring register allocation, ACM Transactions on Programming Languages and Systems, vol.16, issue.3, p.428455, 1994. ,
DOI : 10.1145/177492.177575
The GDSII Stream Format, 1996. ,
Design and synthesis of an IEEE-754 exponential function, Engineering Solutions for the Next Millennium. 1999 IEEE Canadian Conference on Electrical and Computer Engineering (Cat. No.99TH8411), p.450455, 1999. ,
DOI : 10.1109/CCECE.1999.807240
Total cost of ownership : A comparison of C/C++ and Java. Evans Data Corp-BEA Custom Research-White Paper, 2007. ,
Bottleneck analysis in java applications using hardware performance monitors, Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications , OOPSLA '04, p.172173, 2004. ,
DOI : 10.1145/1028664.1028735
Using hpm-sampling to drive dynamic compilation, ACM SIGPLAN Notices, vol.42, issue.10, pp.553-568, 2007. ,
DOI : 10.1145/1297105.1297068
Automatic Tuning of Inlining Heuristics, ACM/IEEE SC 2005 Conference (SC'05), p.14, 2005. ,
DOI : 10.1109/SC.2005.14
Method-specic Dynamic Compilation Using Logistic Regression, SIGPLAN Not, vol.41, issue.10, p.229240, 2006. ,
deGoal a Tool to Embed Dynamic Code Generators into Applications, Compiler Construction, p.107112, 2014. ,
DOI : 10.1007/978-3-642-54807-9_6
URL : https://hal.archives-ouvertes.fr/hal-01068248
Comparative Study of C, C++, C# and Java Programming Languages, 2010. ,
Hotspot & AOT : Now it's time to compile, Java SE Performance Team, vol.4, p.2016 ,
Open runtime platform, Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande , JGI '02, p.156164, 2002. ,
DOI : 10.1145/583810.583828
Global code motion/global value numbering, ACM SIGPLAN Notices, vol.30, issue.6, pp.246-257, 1995. ,
DOI : 10.1145/223428.207154
A Simple Graph-based Intermediate Representation, SIG- PLAN Not, vol.30, issue.3, p.3549, 1995. ,
Fork/join parallelism in the wild : Documenting patterns and anti-patterns in java programs using the fork/join framework, Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform : Virtual machines, Languages, and Tools, p.3950, 2014. ,
URL : https://hal.archives-ouvertes.fr/hal-01064872
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis, Proceedings of the 9th European Conference on Object-Oriented Programming, ECOOP '95, p.77101, 1995. ,
DOI : 10.1007/3-540-49538-X_5
Cache-Oblivious Algorithms and Data Structures In Lecture Notes from the EEF Summer School on Massive Data Sets, BRICS, 2002. ,
Quickly reacquirable locks, US Patent, vol.7814, p.488, 2010. ,
Exploring Application Performance : a New Tool for a Static / Dynamic Approach, Proceedings of the 3rd International Workshop on Parallel Tools for High Performance Computing, ZIH, 2009. ,
URL : https://hal.archives-ouvertes.fr/hal-00141071
Evaluation of Java for General Purpose GPU Computing, 2013 27th International Conference on Advanced Information Networking and Applications Workshops, p.13981404, 2013. ,
DOI : 10.1109/WAINA.2013.234
Speculation without regret, Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform Virtual machines, Languages, and Tools, PPPJ '14, p.187193, 2014. ,
DOI : 10.1145/2647508.2647521
An intermediate representation for speculative optimizations in a dynamic compiler, Proceedings of the 7th ACM workshop on Virtual machines and intermediate languages, VMIL '13, p.110, 2013. ,
DOI : 10.1145/2542142.2542143
PeachPy : A Python Framework for Developing High-Performance Assembly Kernels, 2013. ,
Power challenges may end the multicore era, Communications of the ACM, vol.56, issue.2, p.93102, 2013. ,
DOI : 10.1145/2408776.2408797
Is Your Java Application Hostile to JIT Compilation ?, 11 2014. https: //www.infoq.com/articles/Java-Application-Hostile-to-JIT-Compilation (dernière accès, pp.1-07 ,
Impact of Data Structure Layout on Performance, 2013 21st Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, p.116120, 2013. ,
DOI : 10.1109/PDP.2013.24
Java Native Access (JNA). https://github.com/ java-native-access/jna (dernière accès, pp.1-07 ,
Design, implementation and evaluation of adaptive recompilation with on-stack replacement, International Symposium on Code Generation and Optimization, 2003. CGO 2003., p.241252, 2003. ,
DOI : 10.1109/CGO.2003.1191549
Marmot : An optimizing compiler for java. Number MSR-TR-99-33, p.29, 2000. ,
Instruction tables : Lists of instruction latencies, throughputs and microoperation breakdowns for Intel, AMD and VIA CPUs, pp.1-07, 2014. ,
Optimizing subroutines in assembly language : An optimization guide for x86 platforms, pp.1-07, 2014. ,
The microarchitecture of Intel, AMD and VIA CPUs : An optimization guide for assembly programmers and compiler makers, pp.1-07, 2014. ,
A hardware-software integrated design for a highperformance java processor, Information Technology : New Generations (ITNG), 2012 Ninth International Conference on, p.516521, 2012. ,
Demystifying magic, Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, VEE '09, p.8190, 2009. ,
DOI : 10.1145/1508293.1508305
The Sunway TaihuLight supercomputer: system and applications, Science China Information Sciences, vol.27, issue.7, p.116, 2016. ,
DOI : 10.1177/1094342012456047
The GNU Compiler for the JavaTM Programming Language, pp.1-07 ,
VMKit : A Substrate for Managed Runtime Environments, SIGPLAN Not, vol.45, issue.7, p.5162, 2010. ,
Statistically Rigorous Java Performance Evaluation, SIGPLAN Not, vol.42, issue.10, p.5776, 2007. ,
High-performance parallel programming in java : exploiting native libraries. Concurrency : Practice and Experience, pp.11-13863872, 1998. ,
Numagic : A garbage collector for big data on big numa machines, In ACM SIGARCH Computer Architecture News, vol.43, p.661673, 2015. ,
URL : https://hal.archives-ouvertes.fr/hal-01178790
A microbenchmark case study and lessons learned, Proceedings of the compilation of the co-located workshops on DSM'11, TMC'11, AGERE!'11, AOOPES'11, NEAT'11, & VMIL'11, SPLASH '11 Workshops, p.297308, 2011. ,
DOI : 10.1145/2095050.2095100
The Java Language Specication, Java SE 8 Edition, 2015. ,
Java Justin-Time Compiler and Virtual Machine Improvements for Server and Middleware Applications, Virtual Machine Research and Technology Symposium, pp.151-162, 2004. ,
An Ecient Native Function Interface for Java, Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform : Virtual Machines , Languages, and Tools, PPPJ '13, p.3544, 2013. ,
Microarchitectural Characterization of Production JVMs and Java Workloads, IBM CAS Workshop, 2008. ,
Performance comparison between Java and JNI for optimal implementation of computational micro-kernels, ADAPT 2015 : The 5th International Workshop on Adaptive Self-tuning Computing Systems, 2015. ,
URL : https://hal.archives-ouvertes.fr/hal-01277940
Trace-based Compilation for the Java HotSpot Virtual Machine, Proceedings of the 9th International Conference on Principles and Practice of Programming in Java, PPPJ '11, p.129138, 2011. ,
Optimized Strings for the Java HotSpot&Trade ; Virtual Machine, Proceedings of the 6th International Symposium on Principles and Practice of Programming in Java, PPPJ '08, p.105114, 2008. ,
Context-sensitive Trace Inlining for Java, Comput. Lang. Syst. Struct, vol.39, issue.4, p.123141, 2013. ,
Automatic vs. explicit memory management : Settling the performance debate, 2004. ,
Optimizing Dynamically-Typed Object- Oriented Languages With Polymorphic Inline Caches, Proceedings of the European Conference on Object-Oriented Programming, ECOOP '91, p.2138, 1991. ,
PAPI (Performance Application Programming Interface) library with bindings to Java, pp.1-07 ,
DOs and DON'Ts of Conducting Performance Measurements in Java, Proceedings of the 6th ACM/SPEC International Conference on Performance Engineering, ICPE '15, p.337340, 2015. ,
DOI : 10.1145/1508244.1508275
Automated just-in-time compiler tuning, Proceedings of the 8th annual IEEE/ ACM international symposium on Code generation and optimization, CGO '10, p.6272, 2010. ,
DOI : 10.1145/1772954.1772965
Java bytecode to native code translation: the Caffeine prototype and preliminary results, Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture. MICRO 29, pp.9097-2009, 1996. ,
DOI : 10.1109/MICRO.1996.566453
A trace-based Java JIT compiler for large-scale applications, Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages, VMIL '12, p.12 ,
DOI : 10.1145/2414740.2414742
Adaptive Multi-level Compilation in a Trace-based, Java JIT Compiler. SIGPLAN Not, issue.10, p.47179194, 2012. ,
How a Java VM Can Get More from a Hardware Performance Monitor, SIGPLAN Not, vol.44, issue.10, p.137154, 2009. ,
Identifying the Sources of Cache Misses in Java Programs Without Relying on Hardware Counters, SIGPLAN Not, vol.47, issue.11, p.133142, 2012. ,
Compiling and Optimizing Java 8 Programs for GPU Execution, 2015 International Conference on Parallel Architecture and Compilation (PACT), 2015. ,
DOI : 10.1109/PACT.2015.46
Exploring Single and Multilevel JIT Compilation Policy for Modern Machines, ACM Trans. Archit. Code Optim, vol.1022122, issue.4, p.29, 2013. ,
Performance Potential of Optimization Phase Selection During Dynamic JIT Compilation, Proceedings of the 9th ACM SIG- PLAN/SIGOPS International Conference on Virtual Execution Environments, VEE '13, p.131142, 2013. ,
Javassist : Java bytecode engineering toolkit since 1999, pp.1-07 ,
Java for the Enterprise, 2003. ,
Eective null pointer check elimination utilizing hardware trap, ACM SIGOPS Operating Systems Review, vol.34, issue.5, p.139149, 2000. ,
Techniques for obtaining high performance in Java programs, ACM Computing Surveys, vol.32, issue.3, p.213240, 2000. ,
DOI : 10.1145/367701.367714
Deoptimization for Dynamic Language JITs on Typed, Stack-based Virtual Machines, SIGPLAN Not, vol.49, issue.7, p.103114, 2014. ,
Intel AVX State Transitions : Migrating SSE Code to AVX. https://software.intel.com/en-us/articles/ intel-avx-state-transitions-migrating-sse-code-to-avx (dernière accès, pp.1-07 ,
Hierarchical PLABs, CLABs, TLABs in HotSpot, Proc. International Conference on Systems (ICONS), 2012. ,
JIT Compilation Policy on Single-Core and Multi-core Machines, 2011 15th Workshop on Interaction between Compilers and Computer Architectures, p.5462, 2011. ,
DOI : 10.1109/INTERACT.2011.9
JIT Compilation Policy for Modern Machines, SIGPLAN Not, vol.46, issue.10, p.773788, 2011. ,
Automatic construction of inlining heuristics using machine learning, Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), p.112, 2013. ,
DOI : 10.1109/CGO.2013.6495004
Dynamic Path Prole Aided Recompilation in a Java Just-In-Time Compiler, HiPC, volume 2552 of Lecture Notes in Computer Science, p.495505, 2002. ,
Ecient cooperation between Java and native codes -JNI performance benchmark, The 2001 International Conference on Parallel and Distributed Processing Techniques and Applications, 2001. ,
New stream format: progress report on containing data size explosion, Design and Process Integration for Microelectronic Manufacturing, p.214221, 2003. ,
DOI : 10.1117/12.485260
Method and system for dynamic loop transfer by populating split variables, US Patent, vol.8276, p.131, 2012. ,
Exploiting Superword Level Parallelism with Multimedia Instruction Sets, SIGPLAN Not, vol.35, issue.5, p.145156, 2000. ,
The java.util.concurrent synchronizer framework, Science of Computer Programming, vol.58, issue.3, p.293309, 2005. ,
DOI : 10.1016/j.scico.2005.03.007
Enhanced Hot Spot Detection Heuristics for Embedded Java Just-in-time Compilers, SIGPLAN Not, vol.43, issue.7, p.1322, 2008. ,
Java Native Interface : Programmer's Guide and Specication, 1999. ,
The Java Virtual Machine Specication, Java SE 8 Edition, 2014. ,
Java Performance Survey Results, Developer Productivity Report, pp.1-07, 2015. ,
A new algorithm for computing Boolean operations on polygons, Computers & Geosciences, vol.35, issue.6, p.11771185, 2009. ,
DOI : 10.1016/j.cageo.2008.08.009
System V Application Binary Interface : AMD64 architecture processor supplement, 2013. ,
Overview of excelsior JET, a high performance alternative to java virtual machines, Proceedings of the third international workshop on Software and performance , WOSP '02, p.104113, 2002. ,
DOI : 10.1145/584369.584387
Microbenchmarks for determining branch predictor organization, Software: Practice and Experience, vol.34, issue.5, p.465487, 2004. ,
DOI : 10.1002/spe.572
Mono : Cross platform, open source .NET framework, pp.1-07 ,
Supporting multidimensional arrays in Java, Concurrency and Computation : Practice and Experience, pp.3-5317340, 2003. ,
DOI : 10.1002/cpe.661
NINJA: Java for High Performance Numerical Computing, Scientic Programming, pp.19-33, 2002. ,
DOI : 10.1155/2002/314103
Harissa : A Flexible and Ecient Java Environment Mixing Bytecode and Compiled Code, In COOTS, p.120, 1997. ,
Performance Issues for Multi-language Java Applications, Proceedings of the 15 International Parallel and Distributed Processing Symposium 2000 Workshops, p.544551, 2000. ,
DOI : 10.1007/3-540-45591-4_74
Evaluating the Accuracy of, Java Prolers. SIGPLAN Not, vol.45, issue.6, p.187197, 2010. ,
JITWatch. https://github.com/AdoptOpenJDK/jitwatch (dernière accès, pp.1-07 ,
Vectorization for Java, Proceedings of the 2010 IFIP International Conference on Network and Parallel Computing, p.317, 2010. ,
DOI : 10.1007/978-3-642-15672-4_3
URL : https://hal.archives-ouvertes.fr/hal-01054962
Comparison of C and Java performance in nite element computations, Computers & Structures, vol.81, p.2408, 2003. ,
Vapor SIMD: Auto-vectorize once, run everywhere, International Symposium on Code Generation and Optimization (CGO 2011), p.151160, 2011. ,
DOI : 10.1109/CGO.2011.5764683
URL : https://hal.archives-ouvertes.fr/inria-00589692
Autovectorization in GCCtwo years later, Proceedings of the 2006 GCC Developers Summit, p.145158, 2006. ,
Do C and Java programs scale dierently on Hardware Transactional Memory ?, Workload Characterization (IISWC), 2013 IEEE International Symposium on, p.3443, 2013. ,
Spiral in scala : towards the systematic construction of generators for performance libraries, Acm Sigplan Notices, p.125134, 2013. ,
NUMA-aware memory manager with dominant-thread-based copying GC, In ACM SIGPLAN Notices, vol.44, p.377390, 2009. ,
Add fused multiply add to Java math library, pp.1-07 ,
Add support for AVX512. https://bugs.openjdk.java.net, pp.1-07 ,
Compiler should only use veried interface types for optimization. https, pp.1-07 ,
Integer/FP scalar reduction optimization. https://bugs.openjdk. java.net, pp.8074981-8074982 ,
Reduce Cache Contention on Specied Fields, pp.1-07 ,
Concurrency Updates. https://bugs.openjdk.java.net, JEP, vol.155, pp.8046145-8046146 ,
Compiler Control. https://bugs.openjdk.java.net/browse/ JDK-8046155 (dernière accès, JEP, vol.165, pp.1-07 ,
JEP 191 : Foreign Function Interface. https://bugs.openjdk.java. net, pp.8046181-8046182 ,
More Concurrency Updates, pp.1-07 ,
Support for vectorizing double precision sqrt, pp.1-07 ,
The Java hotspotTM Server Compiler, Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium, p.11, 2001. ,
Combining static and dynamic approaches to model loop performance in HPC, 2015. ,
URL : https://hal.archives-ouvertes.fr/tel-01293040
Returning Control to the Programmer : SIMD Intrinsics for Virtual Machines, Queue, vol.93030, issue.2, p.3037, 2011. ,
Optimal code generation for expression trees: an application BURS theory, Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '88, p.294308, 1988. ,
DOI : 10.1145/73560.73586
New tricks of the GraalVM, p.2015 ,
Rootbeer: Seamlessly Using GPUs from Java, 2012 IEEE 14th International Conference on High Performance Computing and Communication & 2012 IEEE 9th International Conference on Embedded Software and Systems, p.375380, 2012. ,
DOI : 10.1109/HPCC.2012.57
Toba : Java For Applications : A Way Ahead of Time (WAT) Compiler, 1997. ,
Java Memory Model and Thread Specication Revision, 2004. ,
Android : The Road to JIT/AOT Hybrid Compilation-Based Application User Experience, p.2016 ,
IBM Just-In-Time Compiler for Java. Best practices and coding guidelines for improving performance, 2008. ,
Lightweight modular staging : a pragmatic approach to runtime code generation and compiled DSLs, Acm Sigplan Notices, p.127136, 2010. ,
Making native calls from the JVM Oracle Corporation, pp.1-07 ,
Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing, ACM SIGPLAN Notices, issue.10, p.41263272, 2006. ,
Using machines to learn method-specic compilation strategies, Proceedings of the 9th Annual ,
The Simplest Heuristics May Be the Best in, Java JIT Compilers. SIGPLAN Not, vol.38, issue.2, p.3646, 2003. ,
JOP : A Java Optimized Processor for Embedded Real-Time Systems, 2005. ,
Quicksilver : A Quasi-static Compiler for, Java. SIGPLAN Not, vol.35, issue.10, p.6682, 2000. ,
Numeric performance in C, C# and Java. IT University of Copenhagen- Denmark, Version 0, 2010. ,
Intel architecture and silicon cadence : The catalyst for industry innovation, Technology at Intel Magazine, vol.5, p.132, 2006. ,
Java microbenchmark harness (the lesser of two evils) Devoxx '13, 2013. ,
Snippets, ACM Transactions on Architecture and Code Optimization, vol.12, issue.2, p.25, 2015. ,
DOI : 10.1007/978-3-540-78791-4_13
Partial Escape Analysis and Scalar Replacement for Java, Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization, CGO '14, pp.165165-174, 2014. ,
DOI : 10.1145/2581122.2544157
Mhz : Anatomy of a Micro-benchmark, USENIX Annual Technical Conference, 1998. ,
Recueil de ches explicatives de licences libres, Institut National de Recherche en Informatique et en Automatique, 2011. ,
Adaptive inlining and on-stack replacement in the CACAO virtual machine, Proceedings of the 5th international symposium on Principles and practice of programming in Java , PPPJ '07, p.221226, 2007. ,
DOI : 10.1145/1294325.1294356
Inlining java native calls at runtime, Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments , VEE '05, p.121131, 2005. ,
DOI : 10.1145/1064979.1064997
Overview of the IBM Java just-in-time compiler Delite : A compiler architecture for performance-oriented embedded domainspecic languages, IBM systems Journal ACM Transactions on Embedded Computing Systems, vol.39, issue.14s, pp.175193-13134, 2000. ,
Using Hardware Performance Monitors to Understand the Behavior of Java Applications, Proceedings of the third Usenix Virtual Machine Research and Technologie Symposium, VM'04, p.5772, 2004. ,
A Gentle Introduction to Multi-stage Programming, Domain-Specic Program Generation, p.3050, 2004. ,
DOI : 10.1007/978-3-540-25935-0_3
Graal Project : a quest for the JVM to leverage its own J, pp.1-07 ,
Project Panama : Interconnecting JVM and native code, pp.1-07 ,
Project Sumatra, pp.1-07 ,
NUMA-Aware Java Heaps for Server Applications, 19th IEEE International Parallel and Distributed Processing Symposium, pp.108-108, 2005. ,
DOI : 10.1109/IPDPS.2005.299
Generation scavenging : A non-disruptive high performance storage reclamation algorithm, In ACM Sigplan Notices, vol.19, p.157167, 1984. ,
Introducing Sandy Bridge. https://www.cesga.es/pt, pp.1-07 ,
Soot a Java Bytecode Optimization Framework, Proceedings of the 1999 Conference of the Centre for Advanced Studies on Collaborative Research, CASCON '99, p.13, 1999. ,
A Tutorial on Adding New Instructions to the Oracle Java HotSpot Virtual Machine ,
Tiered Compilation Oracle Corporation, pp.1-07, 2013. ,
JTransforms. https://sites.google.com/site/piotrwendykier/ software/jtransforms (dernière accès, pp.1-07 ,
Mint, ACM SIGPLAN Notices, vol.45, issue.6, pp.400-411, 2010. ,
DOI : 10.1145/1809028.1806642
The Free Encyclopedia List of Java Virtual Machines, pp.1-07 ,
The Free Encyclopedia List of JVM languages. https://en.wikipedia. org/wiki/List_of_JVM_languages (dernière accès, pp.1-07 ,
Rooine : An Insightful Visual Performance Model for Multicore Architectures, Commun. ACM, vol.52, issue.4, p.6576, 2009. ,
Linear scan register allocation on SSA form, Proceedings of the 8th annual IEEE/ ACM international symposium on Code generation and optimization, CGO '10, p.170179, 2010. ,
DOI : 10.1145/1772954.1772979
Maxine, ACM Transactions on Architecture and Code Optimization, vol.9, issue.4, p.3013024, 2013. ,
DOI : 10.1145/2400682.2400689
Automatic feedback-directed object inlining in the java hotspot??? virtual machine, Proceedings of the 3rd international conference on Virtual execution environments , VEE '07, p.1221, 2007. ,
DOI : 10.1145/1254810.1254813
A plea for lean software, Computer, vol.28, issue.2, p.6468, 1995. ,
DOI : 10.1109/2.348001
HirakiCP. https://brettwooldridge.github.io/HikariCP/ (dernière accès, pp.1-07 ,
Evaluating Sampling Based Hotspot Detection, Architecture of Computing Systems ARCS 2009, p.2839, 2009. ,
DOI : 10.1007/3-540-46080-2_95
URL : http://comparch.doc.ic.ac.uk/publications/files/qw09arcs.pdf
Extending the Graal Compiler to Optimize Libraries, Proceedings of the ACM International Conference Companion on Object Oriented Programming Systems Languages and Applications Companion, p.4142, 2011. ,
Array bounds check elimination for the Java HotSpot client compiler, IN PPPJ '07 : PROCEEDINGS OF THE 5TH INTERNATIONAL SYMPOSIUM ON PRINCIPLES AND PRACTICE OF PROGRAMMING IN JAVA, p.125133, 2007. ,
Array bounds check elimination in the context of deoptimization, Science of Computer Programming, vol.74, issue.5-6, pp.279-295, 2007. ,
DOI : 10.1016/j.scico.2009.01.002
Combining Oine and Online Optimizations : Register Allocation and Method Inlining, Programming Languages and Systems, p.307322, 2006. ,
Removal of bounds checks in an annotation-aware JVM, Proceedings IEEE SoutheastCon 2002 (Cat. No.02CH37283), p.226228, 2002. ,
DOI : 10.1109/SECON.2002.995591
Object co-location and memory reuse for Java programs, ACM Transactions on Architecture and Code Optimization, vol.4, issue.4, p.1436, 2008. ,
DOI : 10.1145/1328195.1328199
High-Performance Computing on Clusters: The Distributed JVM Approach, High-Performance Computing : Paradigm and Infrastructure, p.459480, 2005. ,
DOI : 10.1002/0471732710.ch23
JESSICA2 : a distributed Java Virtual Machine with transparent thread migration support, Cluster Computing Proceedings. 2002 IEEE International Conference on, p.381388, 2002. ,