ठीक है .. सबसे पहले मुझे कुछ चाहिए था जो यह प्रश्न पूछ रहा था, लेकिन मुझे इसकी आवश्यकता थी! दुर्भाग्य से "बेहतर" तरीका लगभग 600 लाइनों का कोड है !!! इसका नाम क्षमा करें जो इसके साथ कुछ भी नहीं करता है जो यह कर रहा है। उचित नाम Integer64ToCharArray (int64_t मूल्य) था;
https://github.com/JeremyDX/All-Language-Testing-Code/blob/master/C%2B%2B%20Examples/IntegerToCharArrayTesting.cpp
बिना किसी बाधा के प्रदर्शन को साफ करने के लिए बेझिझक कोशिश करें।
इनपुट: किसी भी हस्ताक्षरित 64 बिट मूल्य न्यूनतम से अधिकतम सीमा तक।
उदाहरण:
std::cout << "Test: " << AddDynamicallyToBuffer(LLONG_MAX) << '\n';
std::cout << "Test: " << AddDynamicallyToBuffer(LLONG_MIN) << '\n';
आउटपुट:
Test: 9223372036854775807
Test: -9223372036854775808
मूल गति परीक्षण: ( Integer64ToCharArray (); )
सबसे अच्छा मामला 1 अंक मूल्य।
लूप्स: 100,000,000, समय खर्च: 1,381 (मिल्ली), समय प्रति लूप 13 (नैनो)
बदतर मामला 20 अंकों का मूल्य।
लूप्स: 100,000,000, टाइम स्पेंट: 22,656 (मिल्ली), टाइम प्रति लूप 226 (नैनो)
नई डिज़ाइन स्पीड टेस्ट: ( AddDynamicallyToBuffer (); )
सबसे अच्छा मामला 1 अंक मूल्य।
लूप्स: 100,000,000, समय खर्च: 427 (मिल्ली), समय प्रति लूप 4 (नैनो)
32 बिट वर्स्ट केस - 11 अंक मूल्य।
लूप्स: 100,000,000, समय खर्च: 1,991 (मिल्ली), समय प्रति लूप 19 (नैनो)
नकारात्मक 1 ट्रिलियन सबसे खराब मामला - 14 अंकों का मूल्य।
लूप्स: 100,000,000, समय खर्च: 5,681 (मिल्ली), समय प्रति लूप 56 (नैनो)
64 बिट बदतर मामला - 20 अंकों का मूल्य।
लूप्स: 100,000,000, समय खर्च: 13,148 (मिल्ली), समय प्रति लूप 131 (नैनो)
यह काम किस प्रकार करता है!
हम एक डिवाइड और जीत तकनीक का प्रदर्शन करते हैं और एक बार जब हम स्ट्रिंग की अधिकतम लंबाई लेते हैं तो हम प्रत्येक चरित्र मान को व्यक्तिगत रूप से निर्धारित करते हैं। जैसा कि ऊपर की गति परीक्षणों में दिखाया गया है कि बड़ी लंबाई को बड़ा प्रदर्शन दंड मिलता है, लेकिन यह अभी भी तेज है तो मूल लूप विधि और कोई कोड वास्तव में दो तरीकों के बीच नहीं बदला गया है, तो लूपिंग अब उपयोग में नहीं है।
मेरे उपयोग में इसलिए नाम मैं ऑफसेट को बदले में देता हूं और मैं चार सरणियों के एक बफर को संपादित नहीं करता हूं बल्कि मैं वर्टेक्स डेटा अपडेट करना शुरू कर देता हूं और फ़ंक्शन में ऑफसेट के लिए एक अतिरिक्त पैरामीटर होता है, इसलिए इसे -1 से प्रारंभ नहीं किया जाता है।