UNPKG

hybrid-disk-cache

Version:

A hybrid disk cache utilize both the database and the file system.

59 lines (58 loc) 2.03 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var _1 = __importDefault(require(".")); function log(start, count) { var _a = process.hrtime(start), secs = _a[0], ns = _a[1]; var ms = ns / 1000; var speed = (secs * 1000000 + ms) / count; console.log(' done: %s μs/record.', speed.toFixed(2)); } function benchData(size) { if (size === void 0) { size = 6; } var base = [1, 2, 5]; // from 10B to 5MB var full = new Array(size) .fill(0) .flatMap(function (_, exp) { return base.map(function (b) { return b * Math.pow(10, exp); }); }) .map(function (i) { return Buffer.from(new Array(i).fill(0)); }); return full; } function benchWrite(cache, batch, size) { if (size === void 0) { size = 6; } console.log('> generating bench data from 10B to %sB', 5 * Math.pow(10, size)); var full = benchData(size); var count = 0; console.log('> starting %s x %s writes', batch, full.length); var start = process.hrtime(); for (var i = 0; i < batch; i++) { for (var j = 0; j < full.length; j++) { cache.set('key-' + j, full[j]); count += 1; } } log(start, count); return full.map(function (_, i) { return 'key-' + i; }); } function benchRead(cache, batch, keys) { var count = 0; console.log('> starting %s x %s reads', batch, keys.length); var start = process.hrtime(); for (var i = 0; i < batch; i++) { for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { var key = keys_1[_i]; cache.get(key); count += 1; } } log(start, count); } if (require.main === module) { var cache = new _1.default(); console.log('> cache located at: %s', cache.path); var batch = 3000; var keys = benchWrite(cache, batch, 5); benchRead(cache, batch, keys); }