Skip to content

Instantly share code, notes, and snippets.

@bradpauly
Created March 8, 2013 16:32
Show Gist options
  • Save bradpauly/5117744 to your computer and use it in GitHub Desktop.
Save bradpauly/5117744 to your computer and use it in GitHub Desktop.
Function.prototype.cache = function(){
var _cache = {};
// var key = function(args) {
// return 'x' + args.join('');
// }
var key = function(args) {
var sig = 'x', index = args.length;
while (index--) {
sig += args[index].toString();
}
return sig;
}
this.store = function(args, value){
_cache[key(args)] = value;
return value;
}
this.fetch = function(args) {
var k = key(args);
if (k in _cache) {
console.log('cached')
return _cache[k];
} else {
return null;
}
}
return this;
}();
var withCache = function(){
var args = Array.prototype.slice.apply(arguments);
if (withCache.cache.fetch(args) != null) {
return withCache.cache.fetch(args);
}
var func = args.shift();
var result = func.apply(this, args);
return withCache.cache.store(args, result)
};
function sum() {
var total = 0, length = arguments.length;
while (length--) {
total += arguments[length];
}
return total;
}
function sin(num) {
return Math.sin(num)
}
// 524287, 9369319, 2147483647
function isPrime(num) {
var prime = num != 1;
for ( var i = 2; i < num; i++ ) {
if ( num % i == 0 ) {
prime = false;
break;
}
}
return prime;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment