4
讀取函數2 I've noticed that @unspecialized的源代碼是added recently (in scala 2.10)。它背後的推理是什麼,它如何影響編譯?爲什麼我們需要它的功能*的tupled
,compose
和其他一些方法?@unnspecialized註釋是什麼?
讀取函數2 I've noticed that @unspecialized的源代碼是added recently (in scala 2.10)。它背後的推理是什麼,它如何影響編譯?爲什麼我們需要它的功能*的tupled
,compose
和其他一些方法?@unnspecialized註釋是什麼?
我想說,一個安全的猜測是,它禁用目標方法的專業化。禁用專業化的一個很好的理由是避免字節碼膨脹。不加區別地專門研究每種方法是一個壞主意,因爲每個專業化基本上都是同一方法的獨特副本,並且字節碼的大小增長速度非常快。所以我想這裏專門的Function2
被認爲通常值得增加的字節碼的大小,除了tupled
和compose
這是不重要的足以保證額外的增加。這是代碼大小和執行速度之間的微妙平衡,其想法是獲得最多的錢。
旁白:作爲由特化引起的代碼膨脹問題怎麼能一個有趣的例子,看到這個祕方斯卡拉炸彈: