タイトル & 超要約: オブジェクト指向の爆速化技術!🎉
ギャル的キラキラポイント✨ ● OOP(オブジェクト指向)のアプリが、コンパイル時に賢く予測して速くなるってコト💖 ● Javaアプリとかの動きがヌルヌルになる魔法🧙♀️✨ ● 新しいサービスとか、めっちゃ儲かるチャンス到来💰💕
詳細解説 ● 背景 OOPアプリは便利だけど、動きがもっさりしがち💦 でも、この研究は、コンパイル(翻訳)する時に、どんな動きをするか予想するんだって! 予想することで、キャッシュ(一時的なデータ置き場)の無駄を減らして、アプリを爆速にする作戦🚀
● 方法 静的解析(プログラムを動かさずに分析)を使って、コードの動きをチェック👀 過去のデータとかを参考に、Markov Chain(マルコフ連鎖)っていう統計モデルを使って、賢く予測するの✨
● 結果 Javaアプリとかの動きがスムーズになって、ロード時間も短縮!ユーザー体験が格段にUPするってワケ😉👍
続きは「らくらく論文」アプリで
Object-oriented Programming has become one of the most dominant design paradigms as the separation of concerns and adaptability of design reduce development and maintenance costs. However, the convenience is not without cost. The added indirection inherent in such designs causes excessive pointer chasing, negatively affecting locality, which in turn degrades the performance of cache structures. Furthermore, modern hardware prefetchers are mostly stride prefetchers that are ill-equipped to handle the unpredictability of access patterns generated by pointer chasing. Most software approaches that seek to address this problem resort to profiling the program as it runs, which comes with a significant run-time overhead or requires data from previous runs. In this paper, we propose the use of compile-time static analysis to predict the most common access patterns displayed by a program during run time. Since Java is one of the most popular object-oriented languages, we implement our prototype within the OpenJ9 JVM, inside the OMR optimizer infrastructure. The outputs of our proposed predictor are Markov chains that model the expected behavior of the program. The effectiveness of the proposed predictor is evaluated by comparing the model with the actual run-time behavior of the program measured using an instrumented interpreter. Our experiments show that the proposed predictor exhibits good accuracy and can be used to inform minimally intrusive load stall mitigation strategies, e.g. informing copying GCs on more locality-friendly copying orders