সুতরাং আমি সংখ্যার পূর্ণসংখ্যার জন্য উত্তরে উল্লিখিত কয়েকটি পদ্ধতির পারফরম্যান্স সম্পর্কে আগ্রহী ছিলাম।
প্রস্তুতি
কেবল 0 এবং 100 এর মধ্যে 1 মিলিয়ন এলোমেলো পূর্ণসংখ্যার অ্যারে তৈরি করেছিলাম Than তার চেয়েও আমি স্ট্রিংটি পেতে তাদের প্ররোচিত করেছি।
$integers = array();
for ($i = 0; $i < 1000000; $i++) {
$integers[] = rand(0, 100);
}
$long_string = implode(',', $integers);
পদ্ধতি 1
মার্কের উত্তর থেকে এটিই একটি লাইনার:
$integerIDs = array_map('intval', explode(',', $long_string));
পদ্ধতি 2
এটি হল জেএসএন পদ্ধতির:
$integerIDs = json_decode('[' . $long_string . ']', true);
পদ্ধতি 3
আমি মার্কের উত্তরের পরিবর্তন হিসাবে এটি নিয়ে এসেছি। এটি এখনও explode()
ফাংশনটি ব্যবহার করছে , তবে কল করার পরিবর্তে array_map()
আমি নিয়মিত foreach
লুপটি ব্যবহার করছি array_map()
যাতে ওভারহেড এড়াতে পারে যাতে কাজ না হয় । আমিও সঙ্গে পার্স করছি (int)
বনাম intval()
, কিন্তু আমি উভয় চেষ্টা করেছি, এবং সেখানে কার্যকারিতা পদ অনেক পার্থক্য নয়।
$result_array = array();
$strings_array = explode(',', $long_string);
foreach ($strings_array as $each_number) {
$result_array[] = (int) $each_number;
}
ফলাফল:
Method 1 Method 2 Method 3
0.4804770947 0.3608930111 0.3387751579
0.4748001099 0.363986969 0.3762528896
0.4625790119 0.3645150661 0.3335959911
0.5065748692 0.3570590019 0.3365750313
0.4803431034 0.4135499001 0.3330330849
0.4510772228 0.4421861172 0.341176033
0.503674984 0.3612480164 0.3561749458
0.5598649979 0.352314949 0.3766179085
0.4573421478 0.3527538776 0.3473439217
0.4863037268 0.3742785454 0.3488383293
নীচের লাইনটি গড়। দেখে মনে হচ্ছে প্রথম পদ্ধতিটি 1 মিলিয়ন পূর্ণসংখ্যার জন্য কিছুটা ধীরে ধীরে ছিল, তবে আমি উত্তরে উল্লিখিত 2 পদ্ধতিটির 3x পারফরম্যান্স লাভটি লক্ষ্য করিনি। দেখা গেল foreach
লুপটি আমার ক্ষেত্রে দ্রুততম। আমি এক্সডিবাগের সাথে বেঞ্চমার্কিং করেছি।
সম্পাদনা: উত্তরটি মূলত পোস্ট হওয়ার পরে বেশ কিছুক্ষণ হয়েছে। স্পষ্ট করতে, বেঞ্চমার্কটি পিএইচপি 5.6 তে করা হয়েছিল।