2010-11-01 18 views
6

चलाने के लिए आवश्यक समय की गणना करें, क्या मैं संभव हूं? उदाहरण के लिए । अगर मैं परीक्षण करना चाहता हूं कि str_replace() तेज है कि preg_replace() है?एक निश्चित फ़ंक्शन

+0

संभावित डुप्लिकेट [क्या एक PHP प्रति-फ़ंक्शन (या प्रति-कार्य) प्रदर्शन/बेंचमार्क संदर्भ मौजूद है?] (Http://stackoverflow.com/questions/2530610/does-a-php-per-function-or -पर-कार्य-प्रदर्शन-बेंचमार्क-संदर्भ-अस्तित्व) –

+0

क्षमा करें, डुप्लिकेट की उपेक्षा करें, मैंने सोचा कि बेंचमार्क सेवाओं ने उनके द्वारा उपयोग किए जाने वाले स्रोत कोड प्रदान किए हैं, लेकिन वे नहीं करते हैं। –

+1

आप इसके लिए ज़ेंडे_Debugger या XDebug जैसे प्रोफाइलर चाहते हैं। Http://stackoverflow.com/search?q=profile+php+script – Gordon

उत्तर

13

आप 10,000 गुना (या अधिक) अपनी स्क्रिप्ट में एक ही पंक्ति चला सकते हैं, और microtime(true) का उपयोग समय ले लिया बताने के लिए:

microtime()

+1

+1 देखें यह मानक विधि है। इसे बड़ी संख्या में करना (यानी एक लूप में) करना महत्वपूर्ण है ताकि (ए) आपको एक मापनीय अंतर मिले, और (बी) ताकि आप गति को एक रन और दूसरे के बीच गति में फ़िल्टर कर सकें। – Spudley

+0

धन्यवाद! ऐसा लगता है कि मेरे द्वारा उल्लिखित 2 कार्यों के बीच लगभग कोई अंतर नहीं है :) str_replace कभी-कभी थोड़ा तेज़ लगता है – Alex

+0

मुझे बिल्कुल यकीन नहीं है, लेकिन दुभाषिया के पास एक अनुकूलक है, जो यह पा सकता है कि आपको लूप अनुकूलित किया जा सकता है, क्योंकि कोई चर नहीं है लूप पुनरावृत्तियों में बदल गया। तो, XDebug जैसे कोड-प्रोफाइलर्स का उपयोग करना बेहतर तरीका है – seriyPS

25

आसान तरीका:

$time = microtime(true); // time in Microseconds 

// Your code here 

echo (microtime(true) - $time) . ' elapsed'; 

हार्ड (एर) तरीका: यह देखने के लिए कि आपके तरीके कितने समय लगेगा, एक कोड प्रोफाइलर का उपयोग करें।

6

मुझे यह जवाब this धागे में 'बिस्को' द्वारा मिला।

$ start = microtime (true);

के लिए

(...) { .... }

$ अंत = microtime (सही);

गूंज ($ अंत - $ शुरू)। ' सेकंड ';

फॉर-लूप को जो कुछ भी आप चाहते हैं उसे प्रतिस्थापित किया जा सकता है।

संबंधित मुद्दे