forked from atom/atom
-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathwindow.js
30 lines (29 loc) · 936 Bytes
/
window.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Public: Measure how long a function takes to run.
//
// description - A {String} description that will be logged to the console when
// the function completes.
// fn - A {Function} to measure the duration of.
//
// Returns the value returned by the given function.
window.measure = function(description, fn) {
let start = Date.now();
let value = fn();
let result = Date.now() - start;
console.log(description, result);
return value;
};
// Public: Create a dev tools profile for a function.
//
// description - A {String} description that will be available in the Profiles
// tab of the dev tools.
// fn - A {Function} to profile.
//
// Returns the value returned by the given function.
window.profile = function(description, fn) {
window.measure(description, function() {
console.profile(description);
let value = fn();
console.profileEnd(description);
return value;
});
};