@girders-elements/core
Version:
Girders Elements is an architectural framework that assists with building data-driven apps with React or React Native.
51 lines (15 loc) • 1.33 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:true});exports.
memoize=memoize;exports.
time=time;exports.
timeSync=timeSync;var _immutable=require('immutable');var notPresent='@@girders-elements/_notPreset';function memoize(fn){var cache=(0,_immutable.Map)();return function(arg){var res=cache.get(arg);if(res===notPresent)return undefined;if(res!=null)return res;res=fn(arg);if(res==null)res=notPresent;cache=cache.set(arg,res);return res===notPresent?undefined:res;};}function time(note,fn){var _this=this;if(process.env.GIRDERS_PROFILING!=='enable'){return fn;}return function _callee(){var start,result,end,_args=arguments;return regeneratorRuntime.async(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:start=Date.now();_context.next=3;return regeneratorRuntime.awrap(fn.apply(undefined,_args));case 3:result=_context.sent;end=Date.now();console.log(note+' took '+(end-start)+' ms');return _context.abrupt('return',result);case 7:case'end':return _context.stop();}}},null,_this);};}function timeSync(note,fn){
if(process.env.GIRDERS_PROFILING!=='enable'){
return fn;
}
return function(){
var start=Date.now();
var result=fn.apply(undefined,arguments);
var end=Date.now();
console.log(note+' took '+(end-start)+' ms');
return result;
};
}