क्या आपका फ्रेमवर्क तेज़ है या हैलो वर्ल्ड के प्रदर्शन का परीक्षण करने के लिए यह पर्याप्त है

सबसे तेज़ फ्रेमवर्क "फाल्कन" और "हस्तनिर्मित" के उदाहरण पर।
हमने स्रोत कोड को संकलित किए बिना फाल्कन से आगे निकल गए।




बिल्कुल फाल्कन क्यों? यह प्रदर्शन के मामले में एक काफी ताज़ा और आशाजनक समाधान है, हालाँकि कोई भी ढांचा अपनी जगह पर हो सकता है (यह लेख से स्पष्ट हो जाएगा)।

OpenSuse के लिए इस्तेमाल किए गए फाल्कन 1.2.0beta1 64Bit के परीक्षण के लिए
जुड़े अतिरिक्त पुस्तकालयों में से, PHP 5.3 प्रयोग की शुद्धता के लिए केवल php5-APC था।

मैनुअल द्वारा निर्देशित, हम फेकलोन एप्लिकेशन बनाते हैं
index.php
<?php try { //Register an autoloader $loader = new \Phalcon\Loader(); $loader->registerDirs(array( './app/controllers/', './app/models/' ))->register(); //Create a DI $di = new Phalcon\DI\FactoryDefault(); //Setting up the view component $di->set('view', function(){ $view = new \Phalcon\Mvc\View(); $view->setViewsDir('./app/views/'); return $view; }); //Handle the request $application = new \Phalcon\Mvc\Application($di); echo $application->handle()->getContent(); } catch(\Phalcon\Exception $e) { echo "PhalconException: ", $e->getMessage(); } 

./app/controllers/IndexController.php
 <?php class IndexController extends \Phalcon\Mvc\Controller { public function indexAction() { echo "<h1>Hello!</h1>"; } } 


हम इसे शुरू करते हैं, यह काम करता है, memory_get_usage () कहता है कि 692kb मेमोरी का उपयोग किया जाता है, एक उत्कृष्ट परिणाम।
अपाचे बेंचमार्क 8707 आरपीएस का उत्पादन करता है:


आश्चर्यजनक रूप से अद्भुत प्रदर्शन।

हम xdebug प्रोफ़ाइल में देखते हैं, आशावाद गुजरता है, और बहुत कुछ स्पष्ट हो जाता है। इस ऐप ने क्या खास बनाया? यह सिर्फ गूंज है। मेरे पास फाल्कन के खिलाफ कुछ भी नहीं है, लेकिन अधिक जटिल कार्यों के बारे में क्या है?

क्या स्रोत कोड को संकलित करने की आवश्यकता के बिना, फॉल्कन फ्रेमवर्क बनाना संभव है जो फाल्कन से तेज होगा? कोई सवाल नहीं, हम अभी करेंगे। और फिर हम परीक्षणों से साबित करेंगे कि यह तेज है।

एक प्रतियोगी बनाएं, इसे हस्तनिर्मित कहें
index.php:
 <?php require_once './Autoloader.php'; $autoloader = new Autoloader(array( 'paths'=>array( './app', './lib' ) )); $app = new Application(); $app->run(); 

Autoloader.php
ऑटोलैडर ने अपनी परियोजना से लेने का फैसला किया, उसने समय बचाया।
यहाँ स्रोत कोड, विशेष रूप से परिष्कृत, सामान्य PSR-0 संगत स्टार्टअप कुछ भी नहीं है।

./lib/Application.php
 <?php class Application { public function run() { $uri = $_SERVER['REQUEST_URI']; $paths = explode('/' , $uri); if(isset($paths[0]) && !empty($paths[0])){ $controller = ucfirst(strtolower($paths[0])).'_Controller'; }else{ $controller = 'Index_Controller'; } if(isset($paths[1]) && !empty($paths[1])){ $action = strtolower($paths[1]).'Action'; }else{ $action = 'indexAction'; } $controller = new $controller; $controller->$action(); } } 

ऐप / इंडेक्स / कंट्रोलर। एफपी
 <?php class IndexController extends Controller { public function indexAction() { echo "<h1>Hello!</h1>"; } } 


हम इसे शुरू करते हैं, यह काम करता है, memory_get_usage () कहता है कि 624kb मेमोरी का उपयोग किया गया था। महान परिणाम!

अपाचे बेंचमार्क 11793 आरपीएस का उत्पादन करता है:


वोइला 11793 बनाम 8707 आरपीएस, यह अनुकूलन के बिना, मुश्किल से 15 मिनट की प्रोग्रामिंग नहीं निकला।
यह सुंदर ग्राफिक्स बनाने और लेख के शीर्षक के करीब रखने के लिए बनी हुई है।

शायद, यह सवाल उठेगा कि मैंने अचानक यह निर्णय क्यों लिया, आप उसकी पसंदीदा रूपरेखा "सम्मिलित नाम" की तुलना उसके हैकवर्क से कर सकते हैं जिसकी कोई कार्यक्षमता नहीं है। लक्ष्य और कार्यक्षमता में अतुलनीय मंच परीक्षणों से भरा इंटरनेट पर एक नज़र डालें।

यह विषय का पूरा बिंदु है, चलो दो तुलनात्मक समाधानों के पेलोड पर एक नज़र डालते हैं। वह प्रोफ़ाइल खोलें जो xdebug हमें प्रदान करता है। विज़ुअलाइज़ेशन के लिए मैं kcachegrind का उपयोग करूँगा।

हम क्या देखते हैं:
फाल्कनहाथ का बना



दोनों समाधान लगभग एक ही शून्य कार्य करते हैं।

यह सब क्यों।

एक डेवलपर के रूप में, मैं अक्सर विभिन्न समाधानों को देखता हूं, उपयोग किए गए प्लेटफॉर्म का प्रदर्शन मेरे लिए कोई छोटा महत्व नहीं है। लेकिन, दुर्भाग्य से, अगले ढांचे को खोलने पर, मैं इसके वास्तविक प्रदर्शन को नहीं समझ सकता, डेवलपर्स हैलो वर्ल्ड टेस्ट प्रदान करते हैं, जो बिल्कुल भी नहीं कहता है। यह नेविगेट करना मुश्किल है, यह व्यक्तिगत अनुभव और स्पष्ट रूप से सिस्टम को धीमा करने की समझ के आधार पर एक विशेष मंच के वास्तविक प्रदर्शन का पता लगाने के लिए रहता है।
संकेतक जैसे:

आपको सुविधा, कार्यक्षमता और प्रदर्शन के लिए एक संतुलित समाधान चुनना होगा। मेरी राय में, उत्तरार्द्ध, अनुकूलन के लिए सबसे आसान स्थान है।

नैतिकता

लोकलुभावन नारों और सुंदर विज्ञापन, रुझानों पर ध्यान न दें। जितना संभव हो उतने समाधान सीखें, उनमें से सर्वश्रेष्ठ को लें, सफल क्रियान्वयन को संयोजित करें। परीक्षण लिखना या पढ़ना न करें नमस्ते विश्व समय की बर्बादी है। अपनी विशिष्ट समस्या को हल करने के लिए एक उपकरण चुनें।

Source: https://habr.com/ru/post/In186178/


All Articles