c# - How expensive is a GUID cast and comparison vs a string comparison -


जो तेज़ हो जाएगा?

<पूर्व> बाल समान = (गाइड) पहचानकर्ता == आईडी; Bool same = String.Equals (स्ट्रिंग 1, स्ट्रिंग 2, स्ट्रिंग कॉमपरिन। ऑर्डिनल इज्ञोर केस);

मैंने इस कोड का इस्तेमाल किया:

  ऑब्जेक्ट पीड़ित = Guid.Empty; Guid लक्ष्य = Guid.NewGuid (); स्टॉपवॉच SW = नया स्टॉपवॉच (); sw.Start (); (इंट आई = 0; आई & lt; 10000000; i ++) के लिए {bool equal = ((शिकार) शिकार) == लक्ष्य; } कंसोल। Wrightite ("प्रत्यक्ष कलाकार: {0}", sw.Elapsed); sw.Reset (); sw.Start (); (इंट आई = 0; आई & lt; 10000000; i ++) के लिए {bool equal = Guid.Equals (शिकार, लक्ष्य); } कंसोल.प्रकाशलाइन ("Guid.Equals: {0}", sw.Elapsed); sw.Reset (); sw.Start (); स्ट्रिंग ए = पीड़ित। टॉस्ट्रिंग (); // जैसा मिकेल स्ट्रिंग द्वारा सुझाया गया है b = लक्ष्य। टॉस्ट्रिंग (); (इंट आई = 0; आई & lt; 10000000; i ++) के लिए {bool equal = String.Equals (a, b, स्ट्रिंग कॉम्परियन। ऑर्डिनल इग्नेोर कैस); } कंसोल। Wrightite ("String.Equals: {0}", sw.Elapsed); Console.ReadLine ();  

और विभिन्न मानों (सर्वोत्तम परिदृश्य) के लिए यह परिणाम मिला:

  वस्तु पीड़ित = गिड। खाली; Guid लक्ष्य = Guid.NewGuid (); // डायरेक्ट कास्ट: 00: 00: 00.1164198 // Guid.Equals: 00: 00: 02.1268147 // स्ट्रिंग। एक्लॉल्स: 00: 00: 00.4129527 // हे मेरी!  

और इसी मान के लिए यह परिणाम (खराब परिदृश्य)

  ऑब्जेक्ट पीड़ित = Guid.Empty; Guid target = Guid.Empty; // डायरेक्ट कास्ट: 00: 00: 00.2793173 // गुइड.एक्वाल्ज़: 00: 00: 03.5625 9 48 // स्ट्रिंग.एक्वाल्ज़: 00: 00: 01.7564302  

Comments

Popular posts from this blog

oracle - The fastest way to check if some records in a database table? -

php - multilevel menu with multilevel array -

jQuery UI: Datepicker month format -