ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π² ΠΡΠ½Ρ Π΅Π½ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ TPDE ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Π½Π΅Π³ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π·Π° LLVM β TPDE-LLVM, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ x86-64 ΠΈ AArch64 Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠ΄Π° LLVM-IR. ΠΡΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ TPDE-LLVM ΡΠ΅ ΠΎΠΊΠ°Π·Π° 10-20 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ· ΠΎΡ Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° LLVM -O0 (Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ Π±Π΅Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ) ΠΏΡΠΈ ΡΡΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Ρ 10-30%. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Apache 2.0.
TPDE-LLVM Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡ ΠΈ Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ, ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠΎ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π±Π΅Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (β-O0β). ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠΈΠ»ΠΈΡΠ° Π·Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ tpde-llc, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° JIT-ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°) ΠΈ ΠΏΠ°ΡΠΎΠ²Π΅ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Clang ΠΈ Flang.

ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π° JIT ΠΈΠ»ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ. TPDE-LLVM ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° ΡΠ°ΠΌΠΎ Π²ΡΡΡ Ρ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ Π½Π΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΊΠΎΠ½ΠΊΡΡΠΈΡΠ° Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠΈΡΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ Π½Π° LLVM, ΠΊΠΎΠΈΡΠΎ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ TPDE-LLVM ΡΠ°Π±ΠΎΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ, Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎ-Π±ΡΡΠ· ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ΅Π½ ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ (ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π²Π° ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ· ΠΈ Π΄Π²Π° ΠΏΡΡΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅Ρ).
TPDE-LLVM ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠΈ Π΅ΡΠ°ΠΏΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄:
- ΠΠΎΡΠΈΡΡΠ²Π°Π½Π΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° LLVM;
- ΠΠ½Π°Π»ΠΈΠ· Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠΈΠΊΠ»ΠΈΡΠ΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ;
- Π€ΠΎΡΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΈΡ ΠΊΠΎΠ΄.

ΠΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ΅, ΡΠ΅ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° TPDE Π² ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ Π½Π° LLVM 19 ΠΈ 20 Π²Π΅ΡΠ΅ ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠΊΠΎΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π° LLVM Ρ 18% Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° x86-64 ΠΈ Ρ 13% Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ARM64. Π‘ΠΏΠΎΡΠ΅Π΄ Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° TPDE Π² Π±ΡΠ΄Π΅ΡΠ΅ Ρ ΠΌΠ°Π»ΠΊΠΎ ΡΡΠΈΠ»ΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠΊΠΎΡΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΡΡ Π½Π° LLVM Ρ ΠΎΡΠ΅ 10-20%, Π½ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠΈ ΡΠΎΠ²Π° Π΄ΠΎΡΠΈ ΠΏΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° Π΅ ΠΌΠ°Π»ΠΊΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΡ Π±Π΅ΠΊΠ΅Π½Π΄ Π½Π° LLVM Π΄Π° ΡΡΠΏΠ΅Π΅ Π΄Π° ΡΠ΅ ΡΡΠΊΠΎΡΠΈ 10 ΠΏΡΡΠΈ.
Π ΡΠ΅ΠΊΡΡΠΈΡ Π΅ΡΠ°ΠΏ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡΡ TPDE ΡΠΈ ΠΏΠΎΡΡΠ°Π²Ρ Π·Π° ΡΠ΅Π» Π΄Π° ΠΎΡΠΈΠ³ΡΡΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠ΄Π° LLVM, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ΠΎΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° Clang Π² ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Β«-O0Β» ΠΈ Β«-O1Β». ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΎ Π² ΡΠ΅ΠΆΠΈΠΌ Β«-O2Β», Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½Π° ΠΏΠΎΡΠ°Π΄ΠΈ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² TPDE. Π§Π°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈΡΡ ΠΊΠΎΠ΄ ΠΎΡ Flang ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Rust.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
