. Tab, 9: Points de croisement avec pour chaque intervalle la meilleure implémentation (Java ou JNI) et l'accélération moyenne obtenue Chapitre 7

. État, 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

/. Prix, 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

/. Pérennité, 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

. Diculté-d-'intégration, 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

. Ecacité, Ce critère regarde l'impact sur les performances de la solution employée

. Dans-le-cadre-du and . Projet, 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

. Dans-cette-section, 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

. Les-techniques-d, 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

. Implémentation-d-'intrinsics-du-compilateur-dynamique-le, 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

. Un-exemple-d, 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

. Politique-de-compilation and . Dans, 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

B. Dans-la-itable and .. , 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

.. Applicatif-java, Analyse comparative multi-critère des techniques d'optimisation de code

. Bibliographie, Auto-vectorization in GCC. https://gcc.gnu.org/projects/tree-ssa/ vectorization.html (dernière accès, pp.1-07

Z. Readynow and !. , A "No Stalls Java that starts up fast and stays fast, 2015.

. Zing, The best JVM for the enterprise AZUL Systems, pp.1-07, 2015.

C. Albert, A. Murray, and B. Ravindran, 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

B. Alpern, S. Augart, S. M. Blackburn, M. Butrico, A. Cocchi et al., 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

S. Archibald, Towards Native Performance using Java : Optimizing a simplied DGEMV operation, 2011.

A. Azevedo, A. Nicolau, and J. Hummel, 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

M. Bebenita, M. Chang, G. Wagner, A. Gal, C. Wimmer et al., 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

C. Bentley, S. A. Watterson, D. K. Lowenthal, and B. Rountree, 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. J. Bik and D. B. Gannon, A note on native level 1 BLAS in Java. Concurrency -Practice and Experience, p.10911099, 1997.

S. M. Blackburn, P. Cheng, and K. S. Mckinley, Myths and realities, ACM SIGMETRICS Performance Evaluation Review, vol.32, issue.1, pp.25-36, 2004.
DOI : 10.1145/1012888.1005693

P. Bothner, Compiling Java with GCJ, Linux Journal, issue.1054, 2003.

P. Briggs, K. D. Cooper, and L. Torczon, 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

J. Buchanan, The GDSII Stream Format, 1996.

H. Bui and S. Tahar, 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

A. M. Butters, Total cost of ownership : A comparison of C/C++ and Java. Evans Data Corp-BEA Custom Research-White Paper, 2007.

D. Buytaert, A. Georges, L. Eeckhout, and K. De-bosschere, 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

D. Buytaert, A. Georges, M. Hind, M. Arnold, L. Eeckhout et al., Using hpm-sampling to drive dynamic compilation, ACM SIGPLAN Notices, vol.42, issue.10, pp.553-568, 2007.
DOI : 10.1145/1297105.1297068

J. Cavazos and M. F. O-'boyle, Automatic Tuning of Inlining Heuristics, ACM/IEEE SC 2005 Conference (SC'05), p.14, 2005.
DOI : 10.1109/SC.2005.14

J. Cavazos and M. F. O-'boyle, Method-specic Dynamic Compilation Using Logistic Regression, SIGPLAN Not, vol.41, issue.10, p.229240, 2006.

H. Charles, D. Couroussé, V. Lomüller, F. A. Endo, and R. Gauguey, 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

H. Chen, Comparative Study of C, C++, C# and Java Programming Languages, 2010.

D. Chuyko, Hotspot & AOT : Now it's time to compile, Java SE Performance Team, vol.4, p.2016

M. Cierniak, B. T. Lewis, and J. M. Stichnoth, Open runtime platform, Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande , JGI '02, p.156164, 2002.
DOI : 10.1145/583810.583828

C. Click, Global code motion/global value numbering, ACM SIGPLAN Notices, vol.30, issue.6, pp.246-257, 1995.
DOI : 10.1145/223428.207154

C. Click and M. Paleczny, A Simple Graph-based Intermediate Representation, SIG- PLAN Not, vol.30, issue.3, p.3549, 1995.

M. D. Wael, S. Marr, and T. Van-cutsem, 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

J. Dean, D. Grove, and C. Chambers, 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

E. D. Demaine, Cache-Oblivious Algorithms and Data Structures In Lecture Notes from the EEF Summer School on Massive Data Sets, BRICS, 2002.

D. Dice, M. S. Moir, W. N. Scherer, and I. , Quickly reacquirable locks, US Patent, vol.7814, p.488, 2010.

L. Djoudi, D. Barthou, P. Carribault, W. Jalby, C. Lemuet et al., 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

J. Docampo, S. Ramos, G. L. Taboada, R. R. Exposito, J. Tourino et al., 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

G. Duboscq, T. Würthinger, and H. Mössenböck, 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

G. Duboscq, T. Würthinger, L. Stadler, C. Wimmer, D. Simon et al., 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

M. Dukhan, PeachPy : A Python Framework for Developing High-Performance Assembly Kernels, 2013.

H. Esmaeilzadeh, E. Blem, R. S. Amant, K. Sankaralingam, and D. Burger, Power challenges may end the multicore era, Communications of the ACM, vol.56, issue.2, p.93102, 2013.
DOI : 10.1145/2408776.2408797

B. Evans, 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

N. Faria, R. Silva, and J. Sobral, 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

T. Fast, T. Wall, and L. Chen, Java Native Access (JNA). https://github.com/ java-native-access/jna (dernière accès, pp.1-07

S. J. Fink and F. Qian, 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

R. Fitzgerald, T. B. Knoblock, E. Ruf, B. Steensgaard, and D. Tarditi, Marmot : An optimizing compiler for java. Number MSR-TR-99-33, p.29, 2000.

A. Fog, Instruction tables : Lists of instruction latencies, throughputs and microoperation breakdowns for Intel, AMD and VIA CPUs, pp.1-07, 2014.

A. Fog, Optimizing subroutines in assembly language : An optimization guide for x86 platforms, pp.1-07, 2014.

A. Fog, The microarchitecture of Intel, AMD and VIA CPUs : An optimization guide for assembly programmers and compiler makers, pp.1-07, 2014.

A. S. Fong, C. H. Yau, and Y. Liu, A hardware-software integrated design for a highperformance java processor, Information Technology : New Generations (ITNG), 2012 Ninth International Conference on, p.516521, 2012.

D. Frampton, S. M. Blackburn, P. Cheng, R. J. Garner, D. Grove et al., 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

H. Fu, J. Liao, J. Yang, L. Wang, Z. Song et al., The Sunway TaihuLight supercomputer: system and applications, Science China Information Sciences, vol.27, issue.7, p.116, 2016.
DOI : 10.1177/1094342012456047

G. Team, The GNU Compiler for the JavaTM Programming Language, pp.1-07

N. Georay, G. Thomas, J. Lawall, G. Muller, and B. Folliot, VMKit : A Substrate for Managed Runtime Environments, SIGPLAN Not, vol.45, issue.7, p.5162, 2010.

A. Georges, D. Buytaert, and L. Eeckhout, Statistically Rigorous Java Performance Evaluation, SIGPLAN Not, vol.42, issue.10, p.5776, 2007.

V. Getov, S. F. Hummel, and S. Mintchev, High-performance parallel programming in java : exploiting native libraries. Concurrency : Practice and Experience, pp.11-13863872, 1998.

L. Gidra, G. Thomas, J. Sopena, M. Shapiro, and N. Nguyen, 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

J. Y. Gil, K. Lenz, and Y. Shimron, 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

J. Gosling, B. Joy, G. L. Steele, J. , G. Bracha et al., The Java Language Specication, Java SE 8 Edition, 2015.

N. Grcevski, A. Kielstra, K. Stoodley, M. G. Stoodley, and V. Sundaresan, Java Justin-Time Compiler and Virtual Machine Improvements for Server and Middleware Applications, Virtual Machine Research and Technology Symposium, pp.151-162, 2004.

M. Grimmer, M. Rigger, L. Stadler, R. Schatz, and H. Mössenböck, 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.

J. Ha, M. Gustafsson, S. M. Blackburn, and K. S. Mckinley, Microarchitectural Characterization of Production JVMs and Java Workloads, IBM CAS Workshop, 2008.

N. Halli, H. Charles, and J. Méhaut, 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

C. Häubl and H. Mössenböck, 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.

C. Häubl, C. Wimmer, and H. Mössenböck, 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.

C. Häubl, C. Wimmer, and H. Mössenböck, Context-sensitive Trace Inlining for Java, Comput. Lang. Syst. Struct, vol.39, issue.4, p.123141, 2013.

M. Hertz and E. D. Berger, Automatic vs. explicit memory management : Settling the performance debate, 2004.

U. Hölzle, C. Chambers, and D. Ungar, Optimizing Dynamically-Typed Object- Oriented Languages With Polymorphic Inline Caches, Proceedings of the European Conference on Object-Oriented Programming, ECOOP '91, p.2138, 1991.

V. Horky, PAPI (Performance Application Programming Interface) library with bindings to Java, pp.1-07

V. Horký, P. Libi£, A. Steinhauser, and P. T·ma, 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

K. Hoste, A. Georges, and L. Eeckhout, 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

C. Hsieh, J. Gyllenhaal, and W. Hwu, 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

H. Inoue, 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

H. Inoue, H. Hayashizaki, P. Wu, and T. Nakatani, Adaptive Multi-level Compilation in a Trace-based, Java JIT Compiler. SIGPLAN Not, issue.10, p.47179194, 2012.

H. Inoue and T. Nakatani, How a Java VM Can Get More from a Hardware Performance Monitor, SIGPLAN Not, vol.44, issue.10, p.137154, 2009.

H. Inoue and T. Nakatani, Identifying the Sources of Cache Misses in Java Programs Without Relying on Hardware Counters, SIGPLAN Not, vol.47, issue.11, p.133142, 2012.

K. Ishizaki, A. Hayashi, G. Koblents, and V. Sarkar, 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

M. R. Jantz and P. A. Kulkarni, Exploring Single and Multilevel JIT Compilation Policy for Modern Machines, ACM Trans. Archit. Code Optim, vol.1022122, issue.4, p.29, 2013.

M. R. Jantz and P. A. Kulkarni, 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.

. Jboss-javassist, Javassist : Java bytecode engineering toolkit since 1999, pp.1-07

B. Jrockit, Java for the Enterprise, 2003.

M. Kawahito, H. Komatsu, and T. Nakatani, Eective null pointer check elimination utilizing hardware trap, ACM SIGOPS Operating Systems Review, vol.34, issue.5, p.139149, 2000.

I. H. Kazi, H. H. Chen, B. Stanley, and D. J. Lilja, Techniques for obtaining high performance in Java programs, ACM Computing Surveys, vol.32, issue.3, p.213240, 2000.
DOI : 10.1145/367701.367714

M. N. Kedlaya, B. Robatmili, C. Ca³caval, and B. Hardekopf, Deoptimization for Dynamic Language JITs on Typed, Stack-based Virtual Machines, SIGPLAN Not, vol.49, issue.7, p.103114, 2014.

C. Kirkpatrick, 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

C. M. Kirsch, H. Payer, and H. Röck, Hierarchical PLABs, CLABs, TLABs in HotSpot, Proc. International Conference on Systems (ICONS), 2012.

P. Kulkarni and J. Fuller, 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

P. A. Kulkarni, JIT Compilation Policy for Modern Machines, SIGPLAN Not, vol.46, issue.10, p.773788, 2011.

S. Kulkarni, J. Cavazos, C. Wimmer, and D. Simon, 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

R. V. Kumar, B. L. Narayanan, and R. Govindarajan, Dynamic Path Prole Aided Recompilation in a Java Just-In-Time Compiler, HiPC, volume 2552 of Lecture Notes in Computer Science, p.495505, 2002.

D. Kurzyniec and V. Sunderam, Ecient cooperation between Java and native codes -JNI performance benchmark, The 2001 International Conference on Parallel and Distributed Processing Techniques and Applications, 2001.

P. Lacour, A. J. Reich, K. H. Nakagawa, S. F. Schulze, and L. Grodd, 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

K. J. Langman and Z. L. Wang, Method and system for dynamic loop transfer by populating split variables, US Patent, vol.8276, p.131, 2012.

S. Larsen and S. Amarasinghe, Exploiting Superword Level Parallelism with Multimedia Instruction Sets, SIGPLAN Not, vol.35, issue.5, p.145156, 2000.

D. Lea, 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

S. Lee, S. Moon, and S. Kim, Enhanced Hot Spot Detection Heuristics for Embedded Java Just-in-time Compilers, SIGPLAN Not, vol.43, issue.7, p.1322, 2008.

S. Liang, Java Native Interface : Programmer's Guide and Specication, 1999.

T. Lindholm, F. Yellin, G. Bracha, and A. Buckley, The Java Virtual Machine Specication, Java SE 8 Edition, 2014.

S. Maple, Java Performance Survey Results, Developer Productivity Report, pp.1-07, 2015.

F. Martínez, A. J. Rueda, and F. R. Feito, 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

]. M. Matz, J. Hubi, A. Jaeger, and M. Mark, System V Application Binary Interface : AMD64 architecture processor supplement, 2013.

V. Mikheev, N. Lipsky, D. Gurchenkov, P. Pavlov, V. Sukharev et al., 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

M. Milenkovic, A. Milenkovic, and J. Kulick, Microbenchmarks for determining branch predictor organization, Software: Practice and Experience, vol.34, issue.5, p.465487, 2004.
DOI : 10.1002/spe.572

M. Project, Mono : Cross platform, open source .NET framework, pp.1-07

J. E. Moreira, S. P. Midki, and M. Gupta, Supporting multidimensional arrays in Java, Concurrency and Computation : Practice and Experience, pp.3-5317340, 2003.
DOI : 10.1002/cpe.661

J. E. Moreira, S. P. Midki, M. Gupta, P. Wu, G. Almasi et al., NINJA: Java for High Performance Numerical Computing, Scientic Programming, pp.19-33, 2002.
DOI : 10.1155/2002/314103

G. Muller, B. Moura, F. Bellard, and C. Consel, Harissa : A Flexible and Ecient Java Environment Mixing Bytecode and Compiled Code, In COOTS, p.120, 1997.

P. Murray, T. Smith, M. Srinivas, and . Jacob, 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

T. Mytkowicz, A. Diwan, M. Hauswirth, and P. F. Sweeney, Evaluating the Accuracy of, Java Prolers. SIGPLAN Not, vol.45, issue.6, p.187197, 2010.

C. Newland, JITWatch. https://github.com/AdoptOpenJDK/jitwatch (dernière accès, pp.1-07

J. Nie, B. Cheng, S. Li, L. Wang, and X. Li, 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

G. Nikishkov, Y. Nikishkov, and V. Savchenko, Comparison of C and Java performance in nite element computations, Computers & Structures, vol.81, p.2408, 2003.

D. Nuzman, S. Dyshel, E. Rohou, I. Rosen, K. Williams et al., 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

D. Nuzman and A. Zaks, Autovectorization in GCCtwo years later, Proceedings of the 2006 GCC Developers Summit, p.145158, 2006.

R. Odaira, J. G. Castanos, and T. Nakaike, Do C and Java programs scale dierently on Hardware Transactional Memory ?, Workload Characterization (IISWC), 2013 IEEE International Symposium on, p.3443, 2013.

G. Ofenbeck, T. Rompf, A. Stojanov, M. Odersky, and M. Püschel, Spiral in scala : towards the systematic construction of generators for performance libraries, Acm Sigplan Notices, p.125134, 2013.

T. Ogasawara, NUMA-aware memory manager with dominant-thread-based copying GC, In ACM SIGPLAN Notices, vol.44, p.377390, 2009.

. Openjdk, Add fused multiply add to Java math library, pp.1-07

. Openjdk, Add support for AVX512. https://bugs.openjdk.java.net, pp.1-07

. Openjdk, Compiler should only use veried interface types for optimization. https, pp.1-07

. Openjdk, Integer/FP scalar reduction optimization. https://bugs.openjdk. java.net, pp.8074981-8074982

. Openjdk and . Jep, Reduce Cache Contention on Specied Fields, pp.1-07

. Openjdk, Concurrency Updates. https://bugs.openjdk.java.net, JEP, vol.155, pp.8046145-8046146

. Openjdk, Compiler Control. https://bugs.openjdk.java.net/browse/ JDK-8046155 (dernière accès, JEP, vol.165, pp.1-07

. Openjdk, JEP 191 : Foreign Function Interface. https://bugs.openjdk.java. net, pp.8046181-8046182

. Openjdk and . Jep, More Concurrency Updates, pp.1-07

. Openjdk, Support for vectorizing double precision sqrt, pp.1-07

M. Paleczny, C. Vick, and C. Click, The Java hotspotTM Server Compiler, Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium, p.11, 2001.

]. V. Palomares, Combining static and dynamic approaches to model loop performance in HPC, 2015.
URL : https://hal.archives-ouvertes.fr/tel-01293040

J. Parri, D. Shapiro, M. Bolic, and V. Groza, Returning Control to the Programmer : SIMD Intrinsics for Virtual Machines, Queue, vol.93030, issue.2, p.3037, 2011.

E. Pelegrí-llopart and S. L. Graham, 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

T. Pool, New tricks of the GraalVM, p.2015

P. C. Pratt-szeliga, J. W. Fawcett, and R. D. Welch, 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

T. A. Proebsting, G. Townsend, P. Bridges, J. H. Hartman, T. Newsham et al., Toba : Java For Applications : A Way Ahead of Time (WAT) Compiler, 1997.

W. Pugh, Java Memory Model and Thread Specication Revision, 2004.

K. Rahul, J. Beyler, and H. Paul, Android : The Road to JIT/AOT Hybrid Compilation-Based Application User Experience, p.2016

P. Ramarao, J. Siu, P. Pamula, V. Sundaresan, P. Doyle et al., IBM Just-In-Time Compiler for Java. Best practices and coding guidelines for improving performance, 2008.

T. Rompf and M. Odersky, Lightweight modular staging : a pragmatic approach to runtime code generation and compiled DSLs, Acm Sigplan Notices, p.127136, 2010.

]. J. Rose, Making native calls from the JVM Oracle Corporation, pp.1-07

K. Russell and D. Detlefs, Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing, ACM SIGPLAN Notices, issue.10, p.41263272, 2006.

R. N. Sanchez, J. N. Amaral, D. Szafron, M. Pirvu, and M. Stoodley, Using machines to learn method-specic compilation strategies, Proceedings of the 9th Annual

J. L. Schilling, The Simplest Heuristics May Be the Best in, Java JIT Compilers. SIGPLAN Not, vol.38, issue.2, p.3646, 2003.

M. Schoeberl, JOP : A Java Optimized Processor for Embedded Real-Time Systems, 2005.

M. Serrano, R. Bordawekar, S. Midki, and M. Gupta, Quicksilver : A Quasi-static Compiler for, Java. SIGPLAN Not, vol.35, issue.10, p.6682, 2000.

P. Sestoft, Numeric performance in C, C# and Java. IT University of Copenhagen- Denmark, Version 0, 2010.

S. R. Shenoy and A. Daniel, Intel architecture and silicon cadence : The catalyst for industry innovation, Technology at Intel Magazine, vol.5, p.132, 2006.

A. Shipilev, Java microbenchmark harness (the lesser of two evils) Devoxx '13, 2013.

D. Simon, C. Wimmer, B. Urban, G. Duboscq, L. Stadler et al., Snippets, ACM Transactions on Architecture and Code Optimization, vol.12, issue.2, p.25, 2015.
DOI : 10.1007/978-3-540-78791-4_13

L. Stadler, T. Würthinger, and H. Mössenböck, 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

C. Staelin and L. Mcvoy, Mhz : Anatomy of a Micro-benchmark, USENIX Annual Technical Conference, 1998.

S. Steer and M. Fitzgibbon, Recueil de ches explicatives de licences libres, Institut National de Recherche en Informatique et en Automatique, 2011.

E. Steiner, A. Krall, and C. Thalinger, 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

L. Stepanian, A. D. Brown, A. Kielstra, G. Koblents, and K. Stoodley, 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

T. Suganuma, T. Ogasawara, M. Takeuchi, T. Yasue, M. Kawahito et al., 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.

P. F. Sweeney, M. Hauswirth, B. Cahoon, P. Cheng, A. Diwan et al., 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.

W. Taha, A Gentle Introduction to Multi-stage Programming, Domain-Specic Program Generation, p.3050, 2004.
DOI : 10.1007/978-3-540-25935-0_3

H. The and . Group, Graal Project : a quest for the JVM to leverage its own J, pp.1-07

H. The and . Group, Project Panama : Interconnecting JVM and native code, pp.1-07

H. The and . Group, Project Sumatra, pp.1-07

M. M. Tikir and J. K. Hollingsworth, 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

D. Ungar, Generation scavenging : A non-disruptive high performance storage reclamation algorithm, In ACM Sigplan Notices, vol.19, p.157167, 1984.

B. Valentine, Introducing Sandy Bridge. https://www.cesga.es/pt, pp.1-07

R. Vallée-rai, P. Co, E. Gagnon, L. Hendren, P. Lam et al., 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.

V. Venkatachalam, A Tutorial on Adding New Instructions to the Oracle Java HotSpot Virtual Machine

I. Veresov, Tiered Compilation Oracle Corporation, pp.1-07, 2013.

P. Wendykier, JTransforms. https://sites.google.com/site/piotrwendykier/ software/jtransforms (dernière accès, pp.1-07

E. Westbrook, M. Ricken, J. Inoue, Y. Yao, T. Abdelatif et al., Mint, ACM SIGPLAN Notices, vol.45, issue.6, pp.400-411, 2010.
DOI : 10.1145/1809028.1806642

. Wikipedia, The Free Encyclopedia List of Java Virtual Machines, pp.1-07

. Wikipedia, The Free Encyclopedia List of JVM languages. https://en.wikipedia. org/wiki/List_of_JVM_languages (dernière accès, pp.1-07

S. Williams, A. Waterman, and D. Patterson, Rooine : An Insightful Visual Performance Model for Multicore Architectures, Commun. ACM, vol.52, issue.4, p.6576, 2009.

C. Wimmer and M. Franz, 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

C. Wimmer, M. Haupt, M. L. Van-de, M. Vanter, L. Jordan et al., Maxine, ACM Transactions on Architecture and Code Optimization, vol.9, issue.4, p.3013024, 2013.
DOI : 10.1145/2400682.2400689

C. Wimmer and H. Mössenböck, 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

N. Wirth, A plea for lean software, Computer, vol.28, issue.2, p.6468, 1995.
DOI : 10.1109/2.348001

B. Wooldridge, HirakiCP. https://brettwooldridge.github.io/HikariCP/ (dernière accès, pp.1-07

Q. Wu and O. Mencer, 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

]. T. Würthinger, 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.

T. Würthinger, C. Wimmer, and H. Mössenböck, 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.

T. Würthinger, C. Wimmer, and H. Mössenböck, 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

H. Yamauchi and J. Vitek, Combining Oine and Online Optimizations : Register Allocation and Method Inlining, Programming Languages and Systems, p.307322, 2006.

D. Yessick and J. Jones, 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

Z. C. Yu, F. C. Lau, and C. Wang, 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

W. Zhu, C. Wang, W. Fang, and F. Lau, High-Performance Computing on Clusters: The Distributed JVM Approach, High-Performance Computing : Paradigm and Infrastructure, p.459480, 2005.
DOI : 10.1002/0471732710.ch23

W. Zhu, C. Wang, and F. Lau, JESSICA2 : a distributed Java Virtual Machine with transparent thread migration support, Cluster Computing Proceedings. 2002 IEEE International Conference on, p.381388, 2002.