tgoop.com/plcomp/95
Last Update:
π Breno Campos, Ferreira GuimarΓ£es
"Lazy Evaluation for the Lazy: Automatically Transforming Call-by-Value into Call-by-Need"
Proceedings of the 32nd ACM SIGPLAN International Conference on Compiler Construction. February 2023: 239β249
ΠΠ΅Π½ΠΈΠ²ΡΠΌΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΡΠ°Π·Ρ, Π° ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡ
ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅Π΄ΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π»Π΅Π½ΠΈΠ²ΠΎ, ΡΡΠ΅Π΄Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ°ΡΡΠΈ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π²ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡΡ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΡΠ΅Ρ Π΅Ρ. Π ΡΠ·ΡΠΊΠ°Ρ
Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π»Π΅Π½ΠΈΠ²ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΠΊ lazy, Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ
ΡΠ·ΡΠΊΠ°Ρ
, Π΄ΠΎΠ±ΠΈΡΡΡΡ Π»Π΅Π½ΠΈΠ²ΠΎΡΡΠΈ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°.
Π¦Π΅Π»Ρ Π°Π²ΡΠΎΡΠΎΠ² β Π½Π°ΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π»Π΅Π½ΠΈΠ²ΡΠΌΠΈ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ lazy Π²ΡΡΡΠ½ΡΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π»Π΅Π½ΠΈΠ²ΠΎΡΡΠΈ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ·ΡΠΊΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π²Π½ΡΡΡΠΈ LLVM ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ profile-guided ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π΄Π΅Π»Π°ΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π»Π΅Π½ΠΈΠ²ΡΠΌ. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ LLVM IR Π² SSA ΡΠΎΡΠΌΠ΅.
Π‘ΡΠ°ΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΄Π²Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°:
1) ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Value Slicing, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΈΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² SSA IR.
2) Lazification ΠΏΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ call-by-value Π½Π° call-by-need.
ΠΡΠ±ΠΎΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π΄Π»Ρ lazification ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΉ ΡΡΠ°ΡΡΠ΅:
Chang, Stephen. "Laziness by need." Programming Languages and Systems: 22nd European Symposium on Programming, ESOP 2013
ΠΠ²ΡΠΎΡΡ Π΄ΠΎΠ±ΠΈΠ»ΠΈΡΡ ΡΠΎΡΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° C ΠΈ C++ ΠΎΡ 1% Π΄ΠΎ ~10% Π·Π° ΡΡΠ΅Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ~10%; ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ SPEC CPU 2017.
#optimization #profiling #lazy #llvm
BY PLComp
Share with your friend now:
tgoop.com/plcomp/95