Compiler的多元應用
(在此蒐集編譯器的應用,歡迎補充和修正 -- jserv)
 

不要小看口袋中的 Android 手機

小小一只手機,裡頭可是包含好幾種編譯器: (預設安裝在系統底層)
  • ART (Android 5 以後, AOT [Ahead-of-Time] compiler) 或 Dalvik (Android 4.4 以下, JIT compiler)
  • javac -> dx (DEX)
  • 內建 PCRE engine (irregexp),都是 JIT compiler
  • libbcc, slang, mclinker, rs 
  • droid font
  • noto font
  • Adobe TrueType hinting
  • GLSL (OpenGL|ES)
  • 進入 Recover mode 或用 Android 模擬器執行時,所有 Android 繪圖的底層處理就是透過 libpixelflinger 進行 (blitter)
  • 其中 codeflinger 動態產生 ARM 與 MIPS 的機械碼
 
Android 應用程式裡頭的動態編譯器:
  • 若安裝以 Unity3D 開發的遊戲,那就會有 Mono (C# Runtime; JIT compiler)
  • YouTube.apk 裡面有 luajit.so (found by Freedom)
 
 

Web 引擎和前端技術

  • Google Closure Compiler : 讓 JavaScript 變得更精簡有效,縮短下載時間並提昇在網頁執行的效能
  • Blink  : 新版chromium瀏覽器裡取代v8的Javascript引擎
 

字串和資料處理

  • 對於大量 sprintf() 呼叫時,往往導致效能低落,qrintf 提出加速的機制,允許改寫為可由靜態操作格式的編譯器技巧,這可帶來 10 倍效能提昇。甚至可透過 libtooling  (clang/llvm 的一部分),讓編譯器自動轉換 sprint() 為加速的版本
  • Regex (regular expression): pcre-jit
  • vpacker: 使用 LLVM + JIT 作整數壓縮
  • Vitesse: 透過 LLVM 加速 PostgreSQL
 

網路伺服器