برای محاسبه زمان اجرای برنامه یا تابع در جاوا اسکریپت میتوانیم از یکی از سه راه زیر استفاده کنیم.
وقتی صحبت از عملکرد برنامه ها می شود، اندازه گیری عملکرد مهم می شود. برای اینکه هر چیزی بهینه شود، باید ابتدا اندازه گیری شود، بهینه سازی شود و دوباره اندازه گیری شود تا سود حاصل شود. بنابراین اندازه گیری زمان اجرای جاوا اسکریپت به یکی از این مراحل تبدیل می شود.
مرورگرهای مدرن و پلتفرم Node.js API های مختلفی را برای اندازه گیری زمان اجرای کد ارائه می دهند.
من در این پست به چند روش برای اندازه گیری زمان اجرای جاوا اسکریپت خواهم پرداخت.
با استفاده از متد Date.now ، زمان کنونی را به میلی ثانیه دریافت میکنیم. این متد به ما کمک میکند زمان قبل و بعد از اجرای تابع را داشته باشیم. ما میتوانیم اختلاف زمانی بین زمان پس از اجرا و پیش از اجرای تابع را به دست آوریم. این متد به ما زمان اجرای تابع یا برنامه را باز میگرداند. پس در زیر ما یک تابع به عنوان برنامه جاوا اسکریپیتی نوشتیم. توضیحات خط به خط را بخوانید. این کد در گیت هاب من نیز منتشر شده است.
درخط 1 تا 5: ابتدا یک تابع ایجاد میکنیم. این تابع دارای حلقه for است و برای i کوچکتر از 10 به توان هشت کار میکند.
در خط ششم: یک متغیر به نام start ایجاد میکنیم و زمان کنونی را در آن با ابجکت Date.now ذخیره میکنیم.
در خط7: تابع test که در ابتدا ساختیم را فراخوانی میکنیم (یا صدا میزنیم)
در خط 8: زمان اجرای برنامه را با کم کردن زمان کنونی از زمان اجرای برنامه محاسبه میکنیم و آن را در متغیری به نام timeTaken ذخیره میکنیم. زمان کنونی را در خط 6 ذخیره کردیم.
در خط 9: زمان اجرای برنامه توسط تابع را برای مشاهده، درکنسول چاپ میکنیم.
function test(){ for(let i = 0; i < 1000000000 ; i++){ } } let start = Date.now(); test(); let timeTaken = Date.now() - start; console.log('Total time taken : ' + timeTaken + ' milliseconds'); //Total time taken : 1065 milliseconds
کد مرا در گیت هاب از اینجا ببینید و لایک کنید (ستاره و امتیاز دهید) و نظر بگذارید.
من برای شروع یک تایمر، متد console.time را فراخوانی میکنم و داخل پرانتز یک نام به آن میدهم. سپس تابع test را فراخوانی میکنم (نام آنرا مینویسم تا اجرا شود). سپس متد console.timeEnd را صدا میزنم (مینویسم) و داخل پرانتز همان اسمی که برای متد قبلی نوشتم را مینویسم. از console.time و consoleEnd.time برای محاسبه زنان اجرای تابع test استفاده میکنم.
function test(){ for(let i = 0; i < 1000000000; i++){ } } console.time("test_timer"); test(); console.timeEnd("test_timer");
توضیحات کد بالا برای محاسبه زمان اجرای برنامه:
خط 1 تا 5: ما یک تابع ایجاد کردیم که حلقه for دارد.
خط 6: من متد console.time را با یک ارگومان (ارگیومنت، ورودی) فراخوانی کردم(نوشتیم). این متد، تایمر را با برچسبی به نام test_timer شروع خواهد کرد.
خط 7: من تابع test را فراخوانی کردم(صدازدم یا نوشتم تا اجرا شود)
خط 8: من متد console.timeEnd را با برچسب test_timer صدا زدم. این متد موجب توقف تایمر و نمایش زمان بین console.time و console.timeEnd به میلی ثانیه میشود.
کد مرا در گیت هاب از اینجا ببینید و لایک کنید (ستاره و امتیاز دهید) و نظر بگذارید.❤
متد performance.now زمان سپری شده را برمی گرداند (در مورد timeOrigin
اینجا را بخوانید). این روش زمان را به صورت اعداد ممیز float با دقت حداکثر میکروثانیه برمی گرداند.
<html> <head> </head> <body> Click run button and check the console function test(){ for(let i = 0; i < 1000000000; i++){ } } let start = performance.now(); test(); let timeTaken = performance.now() - start; console.log("Total time taken : " + timeTaken + " milliseconds"); </body> </html>
توضیحات کد بالا:
خط 7 تا 11: من یک تابع به نام test دارای حلقه for ایجاد کردم.
خط 12: من متد performance.now را فراخوانی کردم. این متد، زمان سپری شده از مبدأ زمان را بر میگرداند. این مقدار را در متغیر start ذخیره می کنم.
خط 13: من تابع test را صدا میزنم تا اجرا شود.
خط 14: من یک متغیر به نام timeTaken برای محاسبه زمان سپری شده ایجاد میکنم. مقدار این متغیر برابر است با زمان کنونی منهای زمان شروع برنامه. پس ابتدا متد performance.now را مینویسم و ان را از متغیر start کم میکنم. مقدار به دست آمده متغیر timeTaken، همان مدت زمان اجرای برنامه است.
خط 15: دستور چاپ مقدار سپری شده برای اجرای تابع test را مینویسم.
کد من را در گیت هاب ببینید. لایک کنید (ستاره و امتیاز دهید) و نظر بگذارید.
متد performance.now موثرترین روش محاسبه زمان اجرای برنامه است. زیرا من میتوانم زمان اجرا را با دقت میکروثانیه محاسبه کنم.