ঠিক আছে .. প্রথমত আমার এমন কিছু প্রয়োজন ছিল যা এই প্রশ্নটি যা জিজ্ঞাসা করেছিল তা করেছিল, তবে আমার এটি দ্রুত প্রয়োজন ছিল! দুর্ভাগ্যক্রমে "আরও ভাল" উপায়টি কোডের প্রায় 600 লাইনের !!! এটির নামটি ক্ষমা করুন যা এটি করছে তার সাথে কিছুই করার নেই। যথাযথ নামটি ছিল Integer64ToCharArray (int64_t মান);
https://github.com/JeremyDX/ All-Language-Testing-Code/blob/master/C%2B%2B%20 উদাহরণস্বরূপ / ইন্টেজারটোরচরআরেটেষ্টিংপ্প
পারফরম্যান্সকে বাধা না দিয়ে এই কোডটি সাফাই চেষ্টা করে নির্দ্বিধায় করুন।
ইনপুট: সর্বনিম্ন থেকে সর্বোচ্চ সীমা পর্যন্ত যে কোনও স্বাক্ষরিত bit৪ বিটের মান।
উদাহরণ:
std::cout << "Test: " << AddDynamicallyToBuffer(LLONG_MAX) << '\n';
std::cout << "Test: " << AddDynamicallyToBuffer(LLONG_MIN) << '\n';
আউটপুট:
Test: 9223372036854775807
Test: -9223372036854775808
আসল গতির টেস্ট: ( পূর্ণসংখ্যার 64ToCharArray (); )
সেরা কেস 1 ডিজিটের মান।
লুপস: 100,000,000, সময় ব্যয়: 1,381 (মিলি), সময় প্রতি লুপ 13 (ন্যানো)
খারাপের 20 কেজি মান।
লুপস: 100,000,000, সময় ব্যয়: 22,656 (মিলি), সময় প্রতি লুপ 226 (ন্যানো
নতুন ডিজাইনের গতির টেস্ট: ( অ্যাডডিনামিকালি টুবফার (); )
সেরা কেস 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 এ আরম্ভ হয় না।