اندازهگیری زمان اجرای توابع جاوا اسکریپت
مرداد ۲۳م, ۱۳۸۸
بعضی اوقات پیش اومده که ما یک تابع یا کلا” انجام یک کاری توسط جاوا اسکریپت رو به چندین حالت مختلف برنامه نویسی میتونیم بنویسیم یا انجام بدیم. برای سایت های کوچک و سایتی که استفاده خیلی کمی از جاوا اسکریپت استفاده میکنند شاید مورد مهمی به نظر نیاید اما برای سایت های وب ۲ و سایت هایی که استفادی زیادی از تکنولوژی های جدید جاوا اسکریپت مثل آژاکس (Ajax) میکنند در نظر گرفتن زمان اجرا میتواند عامل بسیار مهمی باشد. البته باید در نظر داشت که کاربران امروزه از تب ها برای استفاده از سایت های مختلف اسفاده میکنند نه از پنجره های متعدد. و این عامل را حتما” باید در نظر داشت که وقتی شما موتور یک مرورگر را مثلا” برای اجرای جاوا اسکریپت در اختیار میگیرید، مسلما” برای تب های دیگر درصد کمتری اختصاص می یابد. بنابراین درصورتی که سایت شما کدهای سنگینی داشته باشد، علاوه بر سایت شما، باعث کند شدن مرورگر هم شده و کاربر را بشدت ناراضی میکند.
و این ها دلایلی است که باعث میشود که زمان اجرای توابع جاوا اسکریپت برای ما اهمیت پیدا کند.
در فایرباگ (Firebug) در قسمت Console تبی با نام Profile وجود دارد که این کار را انجام میدهد! برای مثال شما تابعی نوشتهاید و میخواهید زمان اجرای آن را اندازه گیری کنید. برای این کار کافیست ابتدا یک بار دکمه Profile را بزنید و سپس آن تابع را اجرا کنید. حال دوباره دکمه Profile را بزنید تا زمان اجرای آن را با تمام جزئیات ببینید.
اگر قصد دارید چندین تابع را با هم مقایسه کنید، تمام توابع را بعد از زدن دکمه Profile اجرا کنید و اگر میخواهید کل اسکریپت(script) های سایت را بررسی کنید، بعد از زدن دکمه Profile صفحه را رفرش کنید و دوباره Profile را بزنید.
برای مثال به عکس زیر توجه کنید.

من برای یک درخواست Ajax و اجرای یک تابع بعد از آن، کدی نوشتم (البته با استفاده از کتابخانه jQuery) و آنرا اجرا کردم که نتیجه آنرا میبینید.
توابعی که نام آنها بصورت (?)() است، توابع داخلی هستند که نام خاصی ندارند. برای مثال:
(function(){
// Do something;
})();
ستون Calls تعداد دفعات اجرای هرکدام از توابع در مدت زمانی است که شما Profile را نگه میدارید. برای مثال تابع success یکبار اجرا شده است.
ستون Percentage درصد زمان سپری شده نسبت به کل توابع مورد بررسی قرار گرفته برای این تابع را نمایش میدهد.
ستون Own Time مدت زمان اختصاصی هر تابع را نمایش میدهد. این زمان شامل مدت زمان سپری شده برای توابعی که از داخل این تابع فراخوانی شده اند، نمی باشد.
ستون Time زمان کل هر تابع، با در نظر گرفتن تمام توابع فراخوانی شده از داخل آن میباشد.
ستون های Avg,Minو Max هم بترتیب میانگین، حداقل و حداکثر زمانها را برای هر تابع نمایش می دهد.
در نهایت هم File، لینکی به آدرس فایلی که این تابع در آن قرار دارد برای دسترسی سریع تر برقرار کرده است.
Tags: firebug, javascript, run time, جاوا اسکریپت, فایرباگ
Posted in Mozilla FireFox, javascript, مرتبط با وب 2 | Comments (۳)
شهریور ۱۰م, ۱۳۸۸ at ۱:۰۶ ق.ظ
سلام سید
یه کم مطالبت بیش از حد تخصصیه.
دستت درد نکنه. مطالب خوب و مفیدی داری.
تجربه ات هم که زیاد هست.
شهریور ۱۰م, ۱۳۸۸ at ۱:۰۸ ق.ظ
سلام
cul.ir را به روز کردم.
یک امکان جدید :
کافیه قبل از لینکی که باز کردی بنویسی cul.ir/ و بازش کنی تا سریعا آدرست کوتاه بشه.
بک اسلش فراموش نشه :D
مهر ۱۰م, ۱۳۸۸ at ۱:۵۹ ق.ظ
سلام.
هر چی گشتم اطلاعات تماس پیدا کنم پیدا نکردم.
توی درباره من نوشتید با من در تماس باشید، اما اینکه چطوری، نیست.
به نظر تنها راه همین نظر گذاشتنه. اگر ایمیلتون رو هم می ذاشتین خیلی خوب بود.
به هر حال، اگر با تبادل لینک موافقید یه ایمیل به من بفرستید.