Quá trình JIT compile byte-code thành machine-code

A/c cho e hỏi sau khi JIT compile Byte-code thành Machine Code ở lần đầu thì những lần mở chương trình sau này nó dùng lại Machine Code đó hay JIT phải compile lại toàn bộ ạ?
Nếu nó dùng lại machine-code đã compile trước đó, thì đây có phải là lí do chính khiến các chương trình chạy lần đầu thường khởi động hơi lâu hơn các lần sau ko ạ?

Hình phía dưới e lấy trên stackoverflow nên cũng ko biết có chính xác hay ko!

Tùy compiler, như JIT của Oracle Java có cache disk, còn JIT Lua phải re-compile toàn bộ

Nhưng JIT code không thể cache hết, vì một số optimization (như hot loops) còn tùy vào data đầu vào, đổi data -> đổi optimization -> cache sẽ còn chậm hơn cả reload code

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?