ඔබට ඔබගේ දේශීය සංවර්ධනය පරිගණකයේ කාර්යය කියාත්මක කාලය ලබා ගැනීමට අවශ්ය නම් , ඔබ එක්කෝ ඔබගේ බ්රව්සරයේ ලක්කිරීම උපකරණ, ෙහෝ කොන්සෝලය විධාන වැනි භාවිතා කළ හැකි console.time()
හා console.timeEnd()
.
සියලුම නවීන බ්රව්සර් වල ජාවාස්ක්රිප්ට් පැතිකඩ ඇත. ඔබගේ දැනට පවතින කේතය වෙනස් කිරීමට අවශ්ය නොවන බැවින් මෙම පැතිකඩකරුවන් වඩාත් නිවැරදි මිනුම් ලබා දිය යුතු අතර එය ශ්රිතයේ ක්රියාකාරී වේලාවට බලපායි.
ඔබගේ ජාවාස්ක්රිප්ට් පැතිකඩ කිරීමට:
- දී ක්රෝම් , මාධ්ය F12 සහ තෝරා පැතිකඩ ටැබ්, පසුව එකතු JavaScript CPU නරඹන්න .
- දී ෆයර්ෆොක්ස් , ස්ථාපනය / විවෘත Firebug, සහ මත ක්ලික් කරන්න නරඹන්න බොත්තම.
- දී IE 9+ , මාධ්ය F12 , මත ක්ලික් කරන්න කේත රචනය හෝ Profiler (IE ඔබගේ සංස්කරණය මත පදනම් වේ).
විකල්පයක් ලෙස, ඔබේ සංවර්ධන යන්ත්රය මත , console.time()
සහ සමඟ ඔබේ කේතයට උපකරණ එකතු කළ හැකිය console.timeEnd()
. Firefox11 +, Chrome2 + සහ IE11 + හි සහය දක්වන මෙම කාර්යයන්, ඔබ ආරම්භ කරන / නවත්වන ටයිමර් පිළිබඳ වාර්තා කරයි console.time()
. time()
පරිශීලක-නිර්වචනය කළ ටයිමර් නාමයක් තර්කයක් ලෙස ගෙන, timeEnd()
ටයිමරය ආරම්භ වූ දින සිට ක්රියාත්මක වන වේලාව වාර්තා කරයි:
function a() {
console.time("mytimer");
... do stuff ...
var dur = console.timeEnd("myTimer"); // NOTE: dur only works in FF
}
timeEnd()
ඇමතුමෙහි ගත වූ කාලය ආපසු ලබා දෙන්නේ ෆයර්ෆොක්ස් පමණක් බව සලකන්න . අනෙක් බ්රව්සර් ප්රති the ලය සංවර්ධක කොන්සෝලය වෙත වාර්තා කරයි: ප්රතිලාභ අගය timeEnd()
නිර්වචනය කර නැත.
ඔබට ක්රියාකාරීත්වය ක්රියාත්මක කිරීමේ වේලාව වනාන්තරයේ ලබා ගැනීමට අවශ්ය නම් , ඔබට ඔබේ කේතය උපකරණ කිරීමට සිදුවේ. ඔබට විකල්ප කිහිපයක් තිබේ. විමසීමෙන් ඔබට ආරම්භක හා අවසාන වේලාවන් සුරැකිය හැකිය new Date().getTime()
:
function a() {
var start = new Date().getTime();
... do stuff ...
var end = new Date().getTime();
var dur = end - start;
}
කෙසේ වෙතත් Date
වස්තුවට ඇත්තේ මිලි තත්පර විභේදනයක් පමණක් වන අතර එය ඕනෑම මෙහෙයුම් පද්ධතියක ඔරලෝසු වෙනස්වීම් වලට බලපානු ඇත. නවීන බ්රව්සර් වල වඩා හොඳ විකල්පයක් තිබේ.
වඩා හොඳ විකල්පය භාවිතා කිරීමයි මහ යෝජනාව කාල හෙවත්, window.performance.now()
. now()
සාම්ප්රදායික ක්රමයට වඩා Date.getTime()
වැදගත් ආකාර දෙකකින් වඩා හොඳය :
now()
පිටුවේ සංචාලනයේ ආරම්භයේ සිට මිලි තත්පර ගණන නිරූපණය කරන සබ්මිලිසෙකන්ඩ් විභේදනය සහිත ද්විත්ව වේ. එය භාගයේ ඇති මයික්රෝ තත්පර ගණන නැවත ලබා දෙයි (උදා: 1000.123 ක අගය තත්පර 1 ක් සහ මයික්රෝ තත්පර 123 ක්).
now()
ඒකාකාරී ලෙස වැඩි වෙමින් පවතී. ලෙස මෙය ඉතා වැදගත් වන්නේ Date.getTime()
හැකි හැකි පසුව ඇමතුම් ඉදිරියට හෝ පසුපසට පනින්න. මෙහෙයුම් පද්ධතියේ පද්ධති කාලය යාවත්කාලීන කරන්නේ නම් (උදා: පරමාණුක ඔරලෝසු සමමුහුර්තකරණය) Date.getTime()
ද යාවත්කාලීන වේ. now()
සෑම විටම ඒකාකාරී ලෙස වැඩි වන බවට සහතික වී ඇත, එබැවින් එය මෙහෙයුම් පද්ධතියේ පද්ධති වේලාවට බලපාන්නේ නැත - එය සැමවිටම බිත්ති-ඔරලෝසු කාලය වනු ඇත (ඔබේ බිත්ති ඔරලෝසුව පරමාණුක නොවේ යැයි උපකල්පනය කරමු ...).
now()
ස්ථානය සෑම භාවිතා කළ හැක බව new Date().getTime()
, + new Date
andt Date.now()
වේ. හැර බව ය Date
සහ now()
, වරක් මිශ්ර නොවන ලෙස Date
මත පදනම් වේ , unix යුගයේ (1970 සිට මිලි තත්පර සංඛ්යාව), අතර now()
වෙනස තත්පර දශම සංඛ්යාව ඔබේ පිටුවේ සංචලනය ආරම්භ සිට (එය වඩා කුඩා වනු ඇත එසේ වන්නේ Date
).
භාවිතා කරන්නේ කෙසේද යන්න පිළිබඳ උදාහරණයක් මෙන්න now()
:
function a() {
var start = window.performance.now();
... do stuff ...
var end = window.performance.now();
var dur = end - start;
}
now()
Chrome ස්ථාවර, ෆයර්ෆොක්ස් 15+ සහ IE10 සඳහා සහය දක්වයි. පොලිෆිල් කිහිපයක් ද තිබේ.
වනයේ ක්රියාත්මක කිරීමේ වේලාව මැනීම සඳහා තවත් විකල්පයක් වන්නේ UserTiming ය . UserTiming එක console.time()
හා සමානව ක්රියා console.timeEnd()
කරයි, නමුත් එය භාවිතා කරන එකම අධි විභේදන කාලරාමුව now()
භාවිතා කරයි (එබැවින් ඔබට උප මිලි තත්පරයකින් ඒකාකාරී ලෙස වැඩිවන ඔරලෝසුවක් ලැබේ), සහ කාලරාමු සහ කාලසීමාවන් PerformanceTimeline වෙත සුරකිනු ඇත. .
UserTiming හි ලකුණු ( කාලරාමු ) සහ මිනුම් (කාලසීමාවන්) යන සංකල්ප ඇත . ඔබට අවශ්ය තරම් ප්රමාණයක් ඔබට අර්ථ දැක්විය හැකි අතර ඒවා කාර්ය සාධන ටයිම්ලයින් මත නිරාවරණය වේ .
කාලරාමුව සුරැකීමට, ඔබ අමතන්න mark(startMarkName)
. ඔබගේ පළමු සලකුණේ සිට කාලය ලබා ගැනීම සඳහා, ඔබ අමතන්න measure(measurename, startMarkname)
. කාල සීමාව පසුව ඔබේ ලකුණු සමඟ කාර්ය සාධන ටයිම්ලයින් හි සුරකිනු ඇත.
function a() {
window.performance.mark("start");
... do stuff ...
window.performance.measure("myfunctionduration", "start");
}
// duration is window.performance.getEntriesByName("myfunctionduration", "measure")[0];
UserTiming IE10 + සහ Chrome25 + වලින් ලබා ගත හැකිය. පොලිෆිල් එකක් ද ඇත (මා ලියූ).