A számítástudományokban a memoizáció egy optimalizációs technika, melyet elsősorban arra használnak, hogy felgyorsítsák a számítógép programokat azáltal, hogy a függvényhívások nem ismétlik meg a már korábban feldolgozott bemenetek eredményeinek újbóli kiszámítását.
Forrás: Wikipédia
1 function factorial(n) {
2 return n < 2 ? n : n * factorial(n - 1);
3 }
1 function factorial(n) {
2 factorial = function (n) {
3 var cache = factorial.cache;
4 if (cache[n] === undefined) {
5 cache[n] = n * factorial(n - 1);
6 }
7 return factorial.cache[n];
8 }
9 factorial.cache = [0, 1];
10 factorial.next = function () {
11 return factorial(factorial.cache.length);
12 }
13 return factorial(n);
14 }
Egy sorozat egy darabjának elemeinek összegét számolja ki (például az első 5 elem összege).
1 function RangeSum(data) {
2 this._data = data || [];
3 }
4 RangeSum.prototype = {
5 push : function () {
6 // ...
7 },
8 concat : function () {
9 // ...
10 },
11 sum : function (start, end) {
12 // ...
13 }
14 }
1 sum: function (start, end) {
2 function sum(start, end) {
3 var data = this._data
4 , l = data.length
5 , cache = sum.cache
6 , i = cache.length;
7 start = Math.min(Math.max(0, start || 0), l - 1);
8 end = Math.max(start, Math.min(l, end || l));
9 for (; i <= end; i += 1) {
10 cache[i] = cache[i - 1] + data[i - 1];
11 }
12 return cache[end] - cache[start];
13 }
14 sum.cache = [0];
15 this.sum = sum;
16 return this.sum(start, end);
17 }
1 var hasOwnProperty = Object.prototype.hasOwnProperty;
2 , _ = _ || {};
3 _.identity = function(value) {
4 return value;
5 }
6 _.memoize = function(func, hasher) {
7 var memo = {};
8 hasher || (hasher = _.identity);
9 return function() {
10 var key = hasher.apply(this, arguments);
11 return hasOwnProperty.call(memo, key) ? memo[key] :
12 (memo[key] = func.apply(this, arguments));
13 };
14 }
15
16 fib = _.memoize(fib);
| Memoizáció - emlékező függvények | 1 |
|---|---|
| Memoizáció | 2 |
| Faktoriális számítás (1) | 3 |
| Faktoriális számítás (2) | 4 |
| RangeSum (1) | 5 |
| RangeSum (2) | 6 |
| Automatikus memoizáció | 7 |
| Demo, kérdések | 8 |
| Table of Contents | t |
|---|---|
| Exposé | ESC |
| Source Files | s |
| Slide Numbers | n |
| Notes | 2 |
| Help | h |