- پنجشنبه 11 مرداد 1397 ساعت 15:45
- 3.1.9
- در حال تکمیل
- فعال
کدایگنایتر یک کلاس بنچمارک دارد که همیشه فعال است و قادر است اختلاف زمانی بین هر دو نقطه مشخص شدهای را محاسبه کند.
اصطلاحات فنی
بنچمارک (Benchmark) یعنی ارزیابی و توانسنجی مقایسهای. از کلاس بنچمارک در کدایگنایتر میتوانید برای محاسبه زمان سپری شده بین دو پوینت (نقطه) استفاده کنید. مثلا، میخواهید زمان اجرای دستورات داخل یک حلقه را بدانید. همچنین از این کلاس برای محاسبه زمان اجرای کامل اسکریپت و میزان مصرف مموری نیز میتوانید استفاده کنید.
علاوه بر این، میتوانید نتایج بنچمارک را به کلاس Profiler ارائه دهید تا بتوانید با استفاده از کلاس پروفایلر، ضمن دیباگ اپلیکیشن، پرفورمنس آن را نیز بالا ببرید.
توجه
این کلاس به صورت خودکار توسط سیستم لود میشود، بنابراین نیازی به انجام این کار به صورت دستی نیست.
علاوه بر این، کلاس بنچمارک همیشه همزمان با فراخوانی فریمورک، شروع میشود و توسط کلاس خروجی (output) و دقیقا قبل از ارسال ویو نهایی به مرورگر، پایان مییابد. این کلاس قادر است زمان اجرای کامل سیستم را با دقت خیلی زیادی نشان دهد.
استفاده از کلاس بنچمارک
از کلاس بنچمارک میتوانید در کنترلر، ویو و یا مدل خود استفاده کنید. پروسه استفاده به صورت زیر است:
- نقطه شروع را مشخص کنید.
- نقطه پایان را مشخص کنید.
- برای مشاهده نتیجه، فانکشن
elapsed_time()
را اجرا کنید.
مثال زیر را ببینید:
$this->benchmark->mark('code_start');
// Some code happens here
$this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');
توجه
استفاده از کلمات code_start و code_end اختیاری است. این دو، کلماتی ساده (در واقع مارکرهایی - marker) هستند که برای مشخص کردن و علامتگذاری نقاط استفاده میشوند. هر کلمهای که دوست دارید میتوانید به جای آنها استفاده کنید و میتوانید از چندین مارکر برای علامتگذاری نقاط استفاده کنید. به مثال زیر توجه کنید:
$this->benchmark->mark('dog');
// Some code happens here
$this->benchmark->mark('cat');
// More code happens here
$this->benchmark->mark('bird');
echo $this->benchmark->elapsed_time('dog', 'cat');
echo $this->benchmark->elapsed_time('cat', 'bird');
echo $this->benchmark->elapsed_time('dog', 'bird');
پروفایلینگِ نقاط بنچمارک
اگر میخواهید کلاس پروفایلر (Profiler) به تمام دادههای بنچمارک دسترسی داشته باشد، تمام نقاطی که علامتگذاری کردهاید باید به صورت جفت تعریف شوند و نام هر نقطه علامتگذاری شده (mark point) باید با _start یا پایان یابد. هر جفت پوینت (زوجِ نقطهها) باید با همین الگوی دارای نام دقیقا یکسانی باشند. مثال:
$this->benchmark->mark('my_mark_start');
// Some code happens here...
$this->benchmark->mark('my_mark_end');
$this->benchmark->mark('another_mark_start');
// Some more code happens here...
$this->benchmark->mark('another_mark_end');
برای اطلاعات بیشتر ارزیابی و تجزیه و تحلیل عملکرد اپلیکیشن را بخوانید.
نمایش کل زمان اجرا
اگر میخواهید کل زمان سپری شده از لحظه شروع کدایگنایتر تا لحظه ارسال خروجی نهایی به مرورگر را نشان دهید، کافی است کد زیر را در فایل ویو مورد نظرتان قرار دهید:
<?php echo $this->benchmark->elapsed_time();?>
با کمی دقت متوجه خواهید شد که این همان فانکشن مثال بالا است که برای محاسبه زمان بین دو نقطه از آن استفاده کردیم، به جز اینکه، اینبار هیچ پارامتری به این فانکشن پاس ندادهایم. هنگامی که پارامترها وجود ندارند، کدایگنایتر بنچمارک را دقیقا تا زمان ارسال خروجی نهایی به مرورگر متوقف نمیکند. مهم نیست کجا فانکشن را فراخوانی کنید، تایمر عینا تا پایان اجرای اسکریپت به کار خود ادامه خواهد داد.
اگر ترجیح میدهید به صورت Pure PHP کدنویسی نکنید، یک روش جایگزین برای نمایش زمان سپری شده در فایلهای ویو، استفاده از شبه متغییر (متغییر کاذب) است:
{elapsed_time}
توجه
اگر هر چیزی را میخواهید در متدهای کنترلر خود بنچمارک کنید، باید نقاط آغاز و پایان خود را برای آن تنظیم کنید.
نمایش مصرف حافظه
اگر enable-memory-limit در ورژن نصب شده PHP در سرور شما، کانفیگ شده باشد، میتوانید مقدار مصرف حافظه توسط کل سیستم را، با قرار دادن کد زیر در یکی از فایلهای ویو خود نشان دهید:
<?php echo $this->benchmark->memory_usage();?>
توجه
از این فانکشن فقط در فایلهای ویو خود میتوانید استفاده کنید. مقدار مصرف، کل مموری استفاده شده توسط کل اپلیکیشن را نشان میدهد.
اگر ترجیح میدهید به صورت Pure PHP کدنویسی نکنید، یک روش جایگزین برای نمایش میزان مصرف مموریدر فایلهای ویو، استفاده از شبه متغییر (متغییر کاذب) است:
{memory_usage}
رفرنس کلاس
کلاس CI_Benchmark
mark($name) |
|
پارامترها |
|
مقدار بازگشتی | void (مقدار بازگشتی ندارد) |
مارکر بنچمارک را سِت میکند.
elapsed_time([$point1 = ''[, $point2 = ''[, $decimals = 4]]]) |
|
پارامترها |
|
مقدار بازگشتی | زمان سپری شده |
نوع مقدار بازگشتی | استرینگ |
زمان سپری شده بین دو نقطه علامتگذاری شده را محاسبه کرده و مقدار آن را برمیگرداند.
اگر پارامتر اول این فانکشن خالی باشد، شبه متغییر {elapsed_time}
را برمیگرداند. که امکان نمایش زمان اجرای کامل سیستم در یک تمپلت را فراهم میآورد. کلاس output مقدار واقعی را جایگزین مقدار این متغییر میکند.
memory_usage() |
|
مقدار بازگشتی | اطلاعاتی درباره میزان مصرف حافظه |
نوع مقدار بازگشتی | استرینگ |
در حقیقت مارکر {memory_usage} را برمیگرداند.
این امکان را به شما میدهد تا در هر جایی از تمپلت قرار گیرد و تا پایان اجرای اسکریپت به محاسبه مقدار مموری مصرف شده ادامه میدهد. کلاس output مقدار واقعی را جایگزین مقدار این متغییر میکند.
سایر پستهای داکیومنت
- به کدایگنایتر خوش آمدید
- نصب
- بررسی اجمالی
- شروع به استفاده از کدایگنایتر
- کدایگنایتر در یک نگاه
- فیچرهای کدایگنایتر
- فلوچارت اپلیکیشن
- مدل ویو کنترلر
- اهداف طراحی و معماری
- خودآموز
- مشارکت در کدایگنایتر
- نوشتن مستندات کدایگنایتر در صف ترجمه
- گواهی مبدأ توسعه دهنده 1.1 در صف ترجمه
- مباحث کلی
- URLها در کدایگنایتر
- کنترلرها
- نامهای رزرو شده
- ویوها
- مدلها
- هلپرفانکشنها
- استفاده از لایبرریهای کدایگنایتر
- ساخت لایبرری
- استفاده از درایورهای کدایگنایتر
- ساخت درایور
- ساخت کلاسهای هسته سیستم
- ساخت کلاسهای کمکی
- هوکها - توسعه هسته فریمورک
- بارگذاری خودکار ریسورسها
- فانکشنهای عمومی
- فانکشنهای سازگاری
- مسیریابی URI
- هندل کردن خطاها
- کش کردن صفحات وب
- ارزیابی و تجزیه و تحلیل عملکرد اپلیکیشن
- اجرای کدایگنایتر به وسیله خط فرمان
- مدیریت چندین اپلیکیشن
- هندل کردن محیطهای چندگانه
- سینتکس جایگزین PHP برای فایلهای ویو
- Security در صف ترجمه
- راهنمای کدنویسی در PHP
- لایبرریها در صف ترجمه
- کلاس بنچمارک
- درایور کش در صف ترجمه
- Calendaring Class در صف ترجمه
- Shopping Cart Class در صف ترجمه
- Config Class در صف ترجمه
- Email Class در صف ترجمه
- Encrypt Class در صف ترجمه
- Encryption Library در صف ترجمه
- File Uploading Class در صف ترجمه
- Form Validation در صف ترجمه
- FTP Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Image Manipulation Class در صف ترجمه
- Javascript Class در صف ترجمه
- کلاس زبان
- Loader Class در صف ترجمه
- کلاس مایگریشن
- Output Class در صف ترجمه
- Pagination Class در صف ترجمه
- Template Parser Class در صف ترجمه
- Security Class در صف ترجمه
- Session Library در صف ترجمه
- HTML Table Class در صف ترجمه
- Trackback Class در صف ترجمه
- کلاس تایپوگرافی در صف ترجمه
- Unit Testing Class در صف ترجمه
- URI Class در صف ترجمه
- User Agent Class در صف ترجمه
- XML-RPC and XML-RPC Server Classes در صف ترجمه
- کلاس انکود کردن آرشیو Zip در صف ترجمه
- رفرنس دیتابیس در صف ترجمه
- شروع سریع دیتابیس: کد نمونه
- پیکربندی دیتابیس در صف ترجمه
- Connecting to your Database در صف ترجمه
- Queries در صف ترجمه
- Generating Query Results در صف ترجمه
- Query Helper Methods در صف ترجمه
- Query Builder Class در صف ترجمه
- Transactions در صف ترجمه
- Database Metadata در صف ترجمه
- فراخوانی سفارشی فانکشن
- Database Caching Class در صف ترجمه
- Database Forge Class در صف ترجمه
- Database Utility Class در صف ترجمه
- DB Driver Reference در صف ترجمه
- هلپرفانکشنها
- هلپرفانکشن Array
- هلپرفانکشن CAPTCHA در صف ترجمه
- هلپرفانکشن Cookie
- Date Helper در صف ترجمه
- هلپرفانکشن Directory
- Download Helper در صف ترجمه
- Email Helper در صف ترجمه
- File Helper در صف ترجمه
- هلپرفانکشن Form در صف ترجمه
- HTML Helper در صف ترجمه
- Inflector Helper در صف ترجمه
- هلپرفانکشن Language
- هلپرفانکشن Number
- Path Helper در صف ترجمه
- Security Helper در صف ترجمه
- Smiley Helper در صف ترجمه
- هلپرفانکشن String
- Text Helper در صف ترجمه
- Typography Helper در صف ترجمه
- URL Helper در صف ترجمه
- XML Helper در صف ترجمه