यदि मेरे पास एक अपरिवर्तनीय स्ट्रिंग है तो हैशिंग एल्गोरिदम हर बार जब मैं हैश कहता हूं, या क्या यह मान याद करता है (यह देखते हुए कि स्ट्रिंग बदल नहीं सकती है)?क्या [एनएसएसटींग हैश] हर बार गणना की जाती है?
उत्तर
यह पुन: संकलित है।
- [एनएसएसटींग हैश] वास्तव में एक कॉल है - [एनएससीएफस्ट्रिंग हैश] (टोल फ्री ब्रिजिंग के कारण)।
यदि आप एक प्रोग्राम बनाते हैं जो एक ही स्ट्रिंग पर - [एनएसएसटींग हैश] को कॉल करता है और आप कॉल के बीच में टूट जाते हैं और स्ट्रिंग का बैक अप लेते हुए स्मृति को बदलते हैं, तो आपको एक पुन: गणना हैश मान मिलता है। यह मुझे बताता है कि इसमें कोई कैशिंग शामिल नहीं है।
(gdb) b -[NSCFString hash]
Breakpoint 1 at 0x3b02fa3
(gdb) r
Breakpoint 1, 0x93652fa3 in -[NSCFString hash]()
(gdb) c
Continuing.
2009-05-13 14:23:39.003 a.out[1754:813] Hash: -327163326
हैश मान पर ध्यान दें।
Breakpoint 1, 0x93652fa3 in -[NSCFString hash]()
(gdb) bt
#0 0x93652fa3 in -[NSCFString hash]()
#1 0x00001f73 in main() at test.m:10
(gdb) fra 1
#1 0x00001f73 in main() at test.m:10
10 NSLog(@"Hash: %d", [m hash]);
(gdb) info locals
pool = (NSAutoreleasePool *) 0x109760
m = (NSString *) 0x2030
(gdb) x/20x 0x2030
0x2030 <dyld__mach_header+32>: 0xa06f54a0 0x000007c8 0x00001fa2 0x00000012
0xa06f54a0, "इसा" सूचक है 0x00001fa2 "XXXXXX" स्ट्रिंग के लिए एक सूचक है।
(gdb) set {int}0x1fa2 = 0x59595959
"XXXXXX" स्ट्रिंग को बदलने "YYYYXXXX", तो दूसरी हैश कॉल
(gdb) c
Continuing.
2009-05-13 14:24:35.884 a.out[1754:813] Hash: -246144954
नोट हैश मान होता है पर अलग है जहाँ तक ObjC अपरिवर्तनीय स्ट्रिंग जानता है के लिए जारी रखने के लिए।
कार्यक्रम मैं गए हैं (डी) bugged है:
#import <Cocoa/Cocoa.h>
int main()
{
NSAutoreleasePool * pool = [NSAutoreleasePool new];
NSString * m = [NSString stringWithString:@"XXXXXXXXXXXXXXXXXX"];
NSLog(@"Hash: %d", [m hash]);
NSLog(@"Hash: %d", [m hash]);
[pool release];
}
कमाल का जवाब। धन्यवाद – Ian1971
बहुत अच्छा जवाब –
वैकल्पिक रूप से आप यहां CFStringRef के लिए स्रोत कोड देख सकते हैं: http://opensource.apple.com/source/CF/CF-476.17/CFString.c 'CFHashCode __CFStringHash (CFTypeRef cf) के लिए खोजें 'समारोह के लिए कहा जाता है। ध्यान दें कि यह (ए) 8-बिट और यूनिकोड स्ट्रिंग बफर के लिए चीजें अलग-अलग करता है, और (बी) केवल कुछ निश्चित वर्णों (वर्तमान में 96) तक पहुंच जाता है। हैशिंग एल्गोरिदम के विवरण देखने के लिए '/ * स्ट्रिंग हैशिंग:' के लिए खोजें। –
- 1. एक पायथन ऑब्जेक्ट हैश की गणना कब की जाती है और -1 का हैश क्यों अलग है?
- 2. क्या लूप की सीमा एक बार या प्रत्येक लूप के साथ गणना की जाती है?
- 3. घाटे की गणना कैसे की जाती है?
- 4. एनएसएसटींग गणना
- 5. जावास्क्रिप्ट str.length प्रत्येक बार इसे कॉल या सिर्फ एक बार गणना की जाती है?
- 6. हर बार
- 7. GetBBox() SVGRect की गणना कैसे की जाती है?
- 8. एनएसएसटींग से टेक्स्ट आयत की ऊंचाई की गणना कैसे करें?
- 9. क्या कैनवास हर बार कुछ भी बदलता है?
- 10. पेजरैंक को वितरित तरीके से कैसे गणना की जाती है?
- 11. AdMob कमाई - उनकी गणना कैसे की जाती है
- 12. सिक्योररैंडम: एक बार या हर बार इसकी आवश्यकता होती है?
- 13. RandomNumber विधि हर बार
- 14. कैसे परियोजना हर बार
- 15. एनएसएसटींग ऑब्जेक्ट की अधिकतम लंबाई क्या है?
- 16. सी # फास्ट हैश गणना
- 17. requestAccessToEntityType - एक बार या हर बार?
- 18. एक्सकोड 4 बिल्ड स्कीम हर बार खराब हो जाती है जब मैं गिट
- 19. हर बार उसकेोकू को धक्का देता है, छवियां नहीं दिखायी जाती हैं, पेपरक्लिप
- 20. मेरा नेट-गणना की गई एमडी 5 हैश हैश की समतुल्य वेबसाइट पर गणना क्यों नहीं है?
- 21. हर बार समाधान खोले जाने पर वीएसएस बाइंडिंग खो जाती है
- 22. जूलिया हर बार स्क्रिप्ट संकलित करता है?
- 23. क्या यह कुकी में हैश किए गए पासवर्ड को स्टोर करने की सलाह दी जाती है?
- 24. GlVertexAttribPointer हर बार glBindBuffer कहा जाता है?
- 25. क्या सिल्वरलाइट हर बार असेंबली डाउनलोड करता है?
- 26. सार्वजनिक कुंजी टोकन क्या है और इसे असेंबली मजबूत नामों में कैसे गणना की जाती है?
- 27. हर बार जब मैं डिवाइस
- 28. PRISM WPF - नेविगेशन हर बार
- 29. इवेंट सिग्नल हर बार दो बार उत्सर्जित होता है
- 30. क्रोम प्रीरेंडर सुविधा हर बार
ठीक है, एक और सवाल के साथ जवाब देने के लिए तुम क्यों परवाह करते हैं? यदि आप प्रदर्शन के बारे में चिंतित हैं, तो आप बहुत जल्द ही चिंता कर रहे हैं क्योंकि आपके पास प्रोफ़ाइल के लिए कोई कोड नहीं है और इसे स्वयं के लिए खोजा गया है। इसके अलावा, अगर ऐप्पल इस व्यवहार को दस्तावेज नहीं करता है, तो यह भविष्य में काफी खुशी से बदल सकता है, इसलिए आपको उस पर भरोसा नहीं करना चाहिए। –
शायद मुझे दिलचस्पी थी? – Ian1971