getConfig ফাংশন রান সময়


12

আমি আমার পৃষ্ঠার জন্য রানের সময়টি পরিমাপ করেছি এবং লক্ষ্য করেছি যে getBaseCurrencyCode () ফাংশনটি চালাতে এক সেকেন্ড সময় নেয়। আমার সমস্ত ক্যাচিং সক্ষম হয়েছে।

আমি ফাংশনটি পরীক্ষা করে দেখেছি যে নিম্নলিখিত আদেশটি:

$this->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE)

এক সেকেন্ড সময় নেয়

তবে আমি যখন Mage::getConfig()->getNode(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE); এটি ব্যবহার করি তখন এটি মিলি সেকেন্ডে লাগে

কেউ আমাকে বলতে পারেন কেন এই সময়ের পার্থক্য হয়?

কোন পরামর্শ?


যদিও আপনি প্রস্তাবিত প্রস্তাবিত সমাধানগুলি চেষ্টা করেছি তবে এখনও বেশিরভাগ সময় ব্যবধান রয়েছে। আমি খুশি হব যদি আপনি getConfig ফাংশনটি চালাতে এবং এটি এখানে পোস্ট করতে সময় লাগে এবং চেষ্টা করতে পারেন তবে এটি পরিমাপ করতে পারেন।

এই কোডটি মাইক্রোটাইম ফাংশনগুলির সাথে মোড়ানো দ্বারা এই ফাংশনটি গ্রহণ করার সময়টি পরিমাপ করার চেষ্টা করেছি

যেমন স্থানীয় পথে: app\code\core\Mage\Core\Model এই লাইনের পরিবর্তে:

$configValue = $this->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE);

আমি এই কোডটি (মাইক্রোটাইম সহ একই কোড) দিয়ে এটি প্রতিস্থাপন করেছি:

$start = microtime(true);

$configValue = $this->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE);

$time_elapsed_secs = microtime(true) - $start;

echo "function: getConfig() took me: " .  $time_elapsed_secs . " sec<br />";

die;

আমার আউটপুট ছিল:

function: getConfig() took me: 1.1326711177826 sec

আপনার আউটপুট এবং রানটাইমটি দেখে আমি খুশি হব।

উত্তর:


4

2 এর মধ্যে কনফিগারটি পার্স করার ক্ষেত্রে ছোট পার্থক্য রয়েছে তবে সেগুলি কার্য সম্পাদনকে প্রভাবিত করবে না। উভয় পদ্ধতিই তথ্য পুনরুদ্ধার করতে একটি বড় অ্যারে পেরিয়ে যায়।
getConfigআসলে কিছু সাধারণ গণনা করে এবং তারপরে কল করে getNode
শুধুমাত্র বড় পার্থক্য আমি দেখতে যে $this->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE)এই আহ্বান: $this->_processConfigValue($fullPath, $path, $data);
এই অংশটি চিহ্নিত চিহ্নগুলির সাথে প্রক্রিয়া করে {{...}}এবং কিছু সময়ে পদ্ধতিটি নির্দিষ্ট পরিস্থিতিতে তাকে স্ব বলে।
আপনি _processConfigValueকলটি সরিয়ে দেওয়ার পরে ২ টি বেঞ্চমার্ক করার চেষ্টা করুন ।


3

আপনি কল যখন

$this->getConfig(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE)

এটা কল করবে

 public function getConfig($path)
    {
        if (isset($this->_configCache[$path])) {
            return $this->_configCache[$path];
        }

        $config = Mage::getConfig();

        $fullPath = 'stores/' . $this->getCode() . '/' . $path;
        $data = $config->getNode($fullPath);
        if (!$data && !Mage::isInstalled()) {
            $data = $config->getNode('default/' . $path);
        }
        if (!$data) {
            return null;
        }
        return $this->_processConfigValue($fullPath, $path, $data);
    }

এছাড়াও

protected function _processConfigValue($fullPath, $path, $node)
    {
        if (isset($this->_configCache[$path])) {
            return $this->_configCache[$path];
        }

        if ($node->hasChildren()) {
            $aValue = array();
            foreach ($node->children() as $k => $v) {
                $aValue[$k] = $this->_processConfigValue($fullPath . '/' . $k, $path . '/' . $k, $v);
            }
            $this->_configCache[$path] = $aValue;
            return $aValue;
        }

        $sValue = (string) $node;
        if (!empty($node['backend_model']) && !empty($sValue)) {
            $backend = Mage::getModel((string) $node['backend_model']);
            $backend->setPath($path)->setValue($sValue)->afterLoad();
            $sValue = $backend->getValue();
        }

        if (is_string($sValue) && strpos($sValue, '{{') !== false) {
            if (strpos($sValue, '{{unsecure_base_url}}') !== false) {
                $unsecureBaseUrl = $this->getConfig(self::XML_PATH_UNSECURE_BASE_URL);
                $sValue = str_replace('{{unsecure_base_url}}', $unsecureBaseUrl, $sValue);
            } elseif (strpos($sValue, '{{secure_base_url}}') !== false) {
                $secureBaseUrl = $this->getConfig(self::XML_PATH_SECURE_BASE_URL);
                $sValue = str_replace('{{secure_base_url}}', $secureBaseUrl, $sValue);
            } elseif (strpos($sValue, '{{base_url}}') !== false) {
                $sValue = Mage::getConfig()->substDistroServerVars($sValue);
            }
        }

        $this->_configCache[$path] = $sValue;

        return $sValue;
    }

এবং আপনি কল যখন

Mage::getConfig()->getNode(Mage_Core_Model_Store::XML_PATH_PRICE_SCOPE)

এটি xmlফাইল এবং রিটার্ন আউটপুট পড়বে ।

আমি মনে করি @ মারিয়াস স্যার এর পরামর্শ অনুসারে এটি কার্য সম্পাদনকে প্রভাবিত করবে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.