HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //var/www/design.system/node_modules/memoizerific/tests/fibonacci.js
var Memoizerific = require('../src/memoizerific');

describe("fibonacci", () => {
	var fibonacci,
		fibonacciMemoized,
		fibonacciResult,
		fibonacciMemoizedResult,
		fibonacciTime,
		fibonacciMemoizedTime,
		ratioDifference;

	fibonacci = function (n) {
		if (n < 2){
			return 1;
		}
		else {
			return fibonacci(n-2) + fibonacci(n-1);
		}
	};

	fibonacciMemoized = Memoizerific(50)(function (n) {
		if (n < 2){
			return 1;
		}
		else {
			return fibonacciMemoized(n-2) + fibonacciMemoized(n-1);
		}
	});

	fibonacciTime = process.hrtime();
	fibonacciResult = fibonacci(40);
	fibonacciTime = process.hrtime(fibonacciTime);

	fibonacciMemoizedTime = process.hrtime();
	fibonacciMemoizedResult = fibonacciMemoized(40);
	fibonacciMemoizedTime = process.hrtime(fibonacciMemoizedTime);

	ratioDifference = ((fibonacciTime[0] * 1000000000) + fibonacciTime[1]) / ((fibonacciMemoizedTime[0] * 1000000000) + fibonacciMemoizedTime[1]);

	it("should be map or similar", () => { expect(fibonacciMemoized.cache instanceof Map).toEqual(process.env.FORCE_SIMILAR_INSTEAD_OF_MAP !== 'true'); });
	it("should equal non-memoized result", () => { expect(fibonacciResult).toEqual(fibonacciMemoizedResult); });
	it("should have proper lru length", () => { expect(fibonacciMemoized.lru.length).toEqual(41); });
	it("should be at least 10x faster", () => { expect(ratioDifference).toBeGreaterThan(10); });
});