इसलिए बड़ी संख्या में पूर्णांक के उत्तर में वर्णित कुछ विधियों के प्रदर्शन के बारे में मैं उत्सुक था।
तैयारी
केवल 0 और 100 के बीच 1 मिलियन यादृच्छिक पूर्णांक की एक सरणी बनाकर। थान प्राप्त करने के लिए मैंने उन्हें फंसाया।
$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
यह JSON दृष्टिकोण है:
$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
कि मेरे मामले में लूप सबसे तेज था। मैंने Xdebug के साथ बेंचमार्किंग की है।
संपादित करें: जब से मूल रूप से पोस्ट किया गया था तब से कुछ समय हो गया है। स्पष्ट करने के लिए, बेंचमार्क php 5.6 में किया गया था।