forked from addyosmani/timing.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtiming.min.js
1 lines (1 loc) · 2.59 KB
/
timing.min.js
1
(function(window){"use strict";window.timing=window.timing||{getAll:function(opts){var performance=window.performance||window.webkitPerformance||window.msPerformance||window.mozPerformance;if(performance===undefined){return false}var timing=performance.timing;var api={};opts=opts||{};if(timing){if(opts&&!opts.simple){for(var k in timing){if(isNumeric(timing[k])){api[k]=parseFloat(timing[k])}}}if(api.firstPaint===undefined){var firstPaint=0;if(window.chrome&&window.chrome.loadTimes){firstPaint=window.chrome.loadTimes().firstPaintTime*1e3;api.firstPaintTime=firstPaint-window.performance.timing.navigationStart}else if(typeof window.performance.timing.msFirstPaint==="number"){firstPaint=window.performance.timing.msFirstPaint;api.firstPaintTime=firstPaint-window.performance.timing.navigationStart}if(opts&&!opts.simple){api.firstPaint=firstPaint}}api.loadTime=timing.loadEventEnd-timing.fetchStart;api.domReadyTime=timing.domComplete-timing.domInteractive;api.readyStart=timing.fetchStart-timing.navigationStart;api.redirectTime=timing.redirectEnd-timing.redirectStart;api.appcacheTime=timing.domainLookupStart-timing.fetchStart;api.unloadEventTime=timing.unloadEventEnd-timing.unloadEventStart;api.lookupDomainTime=timing.domainLookupEnd-timing.domainLookupStart;api.connectTime=timing.connectEnd-timing.connectStart;api.requestTime=timing.responseEnd-timing.requestStart;api.initDomTreeTime=timing.domInteractive-timing.responseEnd;api.loadEventTime=timing.loadEventEnd-timing.loadEventStart}return api},printTable:function(opts){var table={};var data=this.getAll(opts)||{};Object.keys(data).sort().forEach(function(k){table[k]={ms:data[k],s:+(data[k]/1e3).toFixed(2)}});console.table(table)},printSimpleTable:function(){this.printTable({simple:true})},getTime:function(){var apiData=this.getAll()||{};var timingData={appcacheTime:apiData.appcacheTime,connectTime:apiData.connectTime,domReadyTime:apiData.domReadyTime,firstPaintTime:apiData.firstPaintTime,initDomTreeTime:apiData.initDomTreeTime,loadEventTime:apiData.loadEventTime,loadTime:apiData.loadTime,lookupDomainTime:apiData.lookupDomainTime,redirectTime:apiData.redirectTime,requestTime:apiData.requestTime,unloadEventTime:apiData.unloadEventTime};return timingData},getReourcesTime:function(){var performance=window.performance||window.webkitPerformance||window.msPerformance||window.mozPerformance;if(performance===undefined||performance.getEntries===undefined){return[]}return performance.getEntries()}};function isNumeric(n){return!isNaN(parseFloat(n))&&isFinite(n)}if(typeof module!=="undefined"&&module.exports){module.exports=window.timing}})(typeof window!=="undefined"?window:{});