प्रकार निष्कर्ष अपने दिए गए उदाहरण में प्रदर्शन को प्रभावित नहीं करेगा। हालांकि, मुझे पता चला कि आपके स्विफ्ट सरणी में टाइप के बारे में विशिष्ट होने से प्रदर्शन पर असर पड़ता है।
उदाहरण के लिए, नीचे दी गई विधि Any
प्रकार की सरणी को घुमाती है।
class func shuffleAny(inout array: [Any]) {
for (var i = 0; i < array.count; i++) {
let currentObject: Any = array[i]
let randomIndex = Int(arc4random()) % array.count
let randomObject: Any = array[randomIndex]
array[i] = randomObject;
array[randomIndex] = currentObject
}
}
ऊपर समारोह वास्तव में अगर मैं इस समारोह के बजाय इस
class func shuffleIntObjects(inout array: [Int]) {
for (var i = 0; i < array.count; i++) {
let currentObject: Int = array[i]
let randomIndex = Int(arc4random()) % array.count
let randomObject: Int = array[randomIndex]
array[i] = randomObject;
array[randomIndex] = currentObject
}
}
समारोह [Any]
0.537 सेकंड 3% STDEV पर में क्लॉक का उपयोग करता है की तरह Int
की एक सरणी ले बनाने के लिए थे तुलना में बहुत धीमी है 1 मिलियन Int
वस्तुओं के लिए। और [Int]
का उपयोग करने वाला फ़ंक्शन 0.181 सेकेंड में 2% STDEV में 1 मिलियन इंट ऑब्जेक्ट्स के लिए देखा गया।
आप इस रेपो (https://github.com/vsco/swift-benchmarks) को देख सकते हैं जो स्विफ्ट में बहुत अधिक रोचक मानदंडों का विवरण देता है। मेरे पसंदीदा लोगों में से एक यह है कि
इसकी एक कंपाइलर जांच के बाद से, यह आपके ऐप के प्रदर्शन को प्रभावित नहीं करेगा। 'एक = 1' और' चलो एक: int = 1' पूरी तरह से समकक्ष हैं। यदि आप alt + क्लिक का उपयोग करके 'ए' का निरीक्षण करते हैं, तो यह इसका 'Int' प्रकार कहेंगे। – Jack
क्या कंपाइलर इसे इंट के रूप में सेट करने से पहले 1 के लिए किसी भी प्रकार की जांच नहीं करेगा? – user2462805
उम? शायद आप स्थिर प्रकार की अनुमान के बिंदु को समझ नहीं रहे हैं। जब आप एनोटेशन छोड़ देते हैं, तो इसका मतलब यह नहीं है कि कंपाइलर वैरिएबल को कुछ जेनेरिक रजिस्टर वैल्यू के रूप में मानता है जिसे इसे आसपास काम करना है। टाइप अनुमान पहले होता है, तब वैरिएबल का इलाज किया जाता है जैसे कि वह उस प्रकार के सभी अभिव्यक्तियों में उपयोग किया जाता था। अगर किसी कारण से कंपाइलर चर के प्रकार को कम नहीं कर सकता है, तो यह एक प्रकार की त्रुटि बन जाता है। रनटाइम पर कुछ भी नहीं होता है। होने के लिए कोई प्रदर्शन लाभ नहीं है। – CodaFi