UNPKG

@rbac/rbac

Version:

Blazing Fast, Zero dependency, Hierarchical Role-Based Access Control for Node.js

116 lines (113 loc) 4.79 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" /> <script src="https://cdn.jsdelivr.net/npm/chart.js@3.5.1/dist/chart.min.js"></script> <title>RBAC Performance Comparison - Large Dataset</title> <style> body { margin: 0; padding: 0; background: #ddd; } .container { box-sizing: border-box; height: 96vh; width: 96vw; margin: 2vh 2vw; resize: both; overflow: hidden; padding: 20px; background: white; box-shadow: 0 0 15px #aaa; } </style> </head> <body> <div class="container"> <canvas id="chart1758993483857" width="16" height="9"></canvas> </div> <script> const format = (num) => { const [whole, fraction] = String(num).split('.') const chunked = [] whole .split('') .reverse() .forEach((char, index) => { if (index % 3 === 0) { chunked.unshift([char]) } else { chunked[0].unshift(char) } }) const fractionStr = fraction !== undefined ? '.' + fraction : '' return ( chunked.map((chunk) => chunk.join('')).join(' ') + fractionStr ) } const ctx1758993483857 = document .getElementById('chart1758993483857') .getContext('2d') const chart1758993483857 = new Chart(ctx1758993483857, { type: 'bar', data: { labels: ["@rbac/rbac - large direct","@rbac/rbac - large inherited","@rbac/rbac - large glob","@rbac/rbac - large callback","@rbac/rbac - large async","@rbac/rbac - large promise","AccessControl - large direct","AccessControl - large inherited","AccessControl - large admin","Popular RBAC - large direct","Popular RBAC - large inherited","Popular RBAC - large admin","Easy RBAC - large direct","Easy RBAC - large inherited","Easy RBAC - large glob","Fast RBAC - large direct","Fast RBAC - large inherited","Fast RBAC - large glob"], datasets: [ { data: [3382936,3392606,3499100,505265,2833698,2834263,980128,482599,427929,117095,60051,54779,3712795,3745439,136132,2804860,2841972,2729879], backgroundColor: ["hsl(108.38399999999999, 85%, 55%)","hsl(108.696, 85%, 55%)","hsl(112.104, 85%, 55%)","hsl(16.18799999999999, 85%, 55%)","hsl(90.79199999999999, 85%, 55%)","hsl(90.804, 85%, 55%)","hsl(31.404000000000003, 85%, 55%)","hsl(15.455999999999992, 85%, 55%)","hsl(13.716000000000008, 85%, 55%)","hsl(3.7559999999999945, 85%, 55%)","hsl(1.9199999999999933, 85%, 55%)","hsl(1.7519999999999925, 85%, 55%)","hsl(118.95599999999999, 85%, 55%)","hsl(120, 85%, 55%)","hsl(4.3559999999999945, 85%, 55%)","hsl(89.868, 85%, 55%)","hsl(91.05599999999998, 85%, 55%)","hsl(87.468, 85%, 55%)"], borderColor: ["hsl(108.38399999999999, 85%, 55%)","hsl(108.696, 85%, 55%)","hsl(112.104, 85%, 55%)","hsl(16.18799999999999, 85%, 55%)","hsl(90.79199999999999, 85%, 55%)","hsl(90.804, 85%, 55%)","hsl(31.404000000000003, 85%, 55%)","hsl(15.455999999999992, 85%, 55%)","hsl(13.716000000000008, 85%, 55%)","hsl(3.7559999999999945, 85%, 55%)","hsl(1.9199999999999933, 85%, 55%)","hsl(1.7519999999999925, 85%, 55%)","hsl(118.95599999999999, 85%, 55%)","hsl(120, 85%, 55%)","hsl(4.3559999999999945, 85%, 55%)","hsl(89.868, 85%, 55%)","hsl(91.05599999999998, 85%, 55%)","hsl(87.468, 85%, 55%)"], borderWidth: 2, }, ], }, options: { maintainAspectRatio: false, plugins: { title: { display: true, text: 'RBAC Performance Comparison - Large Dataset', font: { size: 20 }, padding: 20, }, legend: { display: false, }, tooltip: { callbacks: { label: (context) => { return format(context.parsed.y) + ' ops/s' }, }, displayColors: false, backgroundColor: '#222222', padding: 10, cornerRadius: 5, intersect: false, }, }, scales: { x: { grid: { color: '#888888', }, }, y: { title: { display: true, text: 'Operations per second', padding: 10, }, grid: { color: '#888888', }, }, }, }, }) </script> </body> </html>