請原諒這個有趣的標題,我用它類比「zip bomb」。是否有可能創建一個scala源文件,這會在編譯時生成大量的類文件(或非常大的單個類文件)?有沒有什麼方法可以使類文件的大小比源文件的大小線性增長更快?斯卡拉炸彈? (像一個拉鍊炸彈)
27
A
回答
32
專業化在類型參數的數量方面天生就是指數型的。
class Huge[@specialized A, @specialized B, @specialized C](
val a: A, val b: B, val c: C
) {} // 730 files, 2.9 MB
class Gigantic[@specialized A, @specialized B, @specialized C, @specialized D](
val a: A, val b: B, val c: C, val d: D
) {} // 6562 files, 26 MB
模式匹配也可能涉及大量的代碼重複複雜的情況下(雖然我覺得很難準確預測何時會發生)。
+0
啊,我從來沒有用過專業化,很好的答案! – 2011-12-18 13:09:27
+2
Rex,對於信息來說,有一個模式匹配https://issues.scala-lang.org/browse/SI-1133的錯誤,它會失敗,因爲生成的代碼太多。這應該在2.10中使用新的虛擬模式匹配器來解決。 – 2011-12-18 13:27:36
相關問題
- 1. Tika拉鍊炸彈例外
- 2. 拉鍊炸彈的不利影響?
- 3. 炸彈人遊戲上的炸彈爆炸
- 4. error'expected')'before'炸彈'
- 5. 批叉炸彈?
- 6. 多重炸彈
- 7. 炸彈 - Cocos2d/Box2d
- 8. 炸彈香草JS
- 9. 炸彈人網絡通信 - 無法發送炸彈
- 10. 爆炸下拉值
- 11. 斯卡拉彈出式菜單
- 12. 數據框中星火斯卡拉爆炸JSON數組
- 13. 像斯卡拉
- 14. 二元炸彈 - 階段2
- 15. 陣列彈出炸燬
- 16. 瞭解炸彈實驗室
- 17. 炸彈項目GDB斷線
- 18. 防止XML炸彈XercesDOMParser - C++
- 19. 創建炸彈 - Cocos2d/Box2d
- 20. 炸彈遠離戰列艦
- 21. 裝配 - 二進制炸彈
- 22. 我該如何保護自己免受拉鍊炸彈的侵害?
- 23. 如何聲明對象的數組指針? (LNK2001解析的外部符號 「公用:靜態類炸彈*彈::彈」(炸彈@炸彈@@ 2PAPAV1 @ A)?)
- 24. 斯卡拉形狀不拉鍊問題
- 25. 斯卡拉:在一個塊
- 26. 斯卡拉鍊接列表
- 27. 斯卡拉2.8.0工具鏈
- 28. 斯卡拉 - 一類
- 29. Spring-ws XML炸彈保護,任何人?
- 30. 炸彈實驗室組裝說明
你到底想要什麼? – 2011-12-18 11:48:22
@NikitaVolkov這聽起來像一個有趣的心理練習,但我有一個問題試圖找到一個實際的應用程序。 – Vatine 2011-12-18 11:55:08
好的,對於那些需要實踐應用的人:試圖保護一個從DOS攻擊編譯Scala代碼的服務。 – 2011-12-18 12:00:13