2016-08-31 9 views
5

मैंKotlin 'जब तक' मज़ा IntRange कचरा

for (x in 0 until bodies.size) bodies[x]() 

नीचे मेरी पाश के लिए until इन्फ़िक्स मज़ा उपयोग कर रहा था जब YourKit के साथ अपने कोड की रूपरेखा मैंने देखा है कि मैं IntRange वस्तुओं की एक बड़ी राशि (लगभग 2k था/बनाने सेकंड)। enter image description here

जब मैं पाश int...int rangeTo उपयोग करने के लिए इसे सीधे किसी भी कचरा पैदा नहीं करता स्विच करें।

for (x in 0..bodies.size-1) bodies[x]() 

क्या कोई इन दोनों के बीच अंतर को समझा सकता है? से मैं क्या Int.until बता सकते हैं बस रिटर्न this .. to

public infix fun Int.until(to: Int): IntRange { 
    val to_ = (to.toLong() - 1).toInt() 
    if (to_ > to) throw IllegalArgumentException("The to argument value '$to' was too small.") 
    return this .. to_ 
} 

उत्तर

5

वर्तमान संस्करण v1.0.4 में संकलक rangeTo और downTo कार्यों के लिए कॉल का अनुकूलन क्योंकि वे for छोरों में सबसे आम है।

मुझे लगता है कि वे जल्द ही कुछ समय until अनुकूलित करेंगे।

यहां प्रासंगिक मुद्दा टिकट है: https://youtrack.jetbrains.com/issue/KT-9900। इसे वोट करने के लिए स्वतंत्र महसूस करें।