temp
This commit is contained in:
parent
f48d63038d
commit
c4f59fbb01
5 changed files with 1278 additions and 13 deletions
|
@ -1,9 +1,10 @@
|
|||
import { summary, run, bench } from 'mitata';
|
||||
import { createRouter, insertItem } from '@mapl/router'
|
||||
import { compileRouter } from './mapl_compiler.mjs'
|
||||
import assert from 'assert'
|
||||
import { compilePaths } from "./router_v2.mjs"
|
||||
import { compilePaths as mainCompiler, compilePathsClosure } from "../router_v2.mjs"
|
||||
import { compilePaths as mainCompiler } from "../router_v2.mjs"
|
||||
import { FlaskaRouter as FlaskaRouterBuffer } from "../flaska_buffer.mjs"
|
||||
import { FlaskaRouter as FlaskaRouterFast } from "../flaska_fast.mjs"
|
||||
import * as consts from './const.js'
|
||||
|
||||
function printCurrentStatus(fn) {
|
||||
|
@ -36,13 +37,21 @@ function printStatusHelperText() {
|
|||
bench('noop', () => { });
|
||||
bench('noop2', () => { });
|
||||
|
||||
let paths = consts.allManyRoutes.map(x => ({ path: x }))
|
||||
let paths = consts.allRoutes.map(x => ({ path: x }))
|
||||
let tests = paths.map(p => ([p.path.replace(/:[^/]+/g, '_'), p]))
|
||||
let testStrings = tests.map(x => x[0])
|
||||
let testStringsMapl = testStrings.map(x => x.slice(1))
|
||||
let func = [[testStrings, mainCompiler(paths)]]
|
||||
|
||||
let func = [[testStrings, ...mainCompiler(paths)]]
|
||||
func.push([testStrings, ...compilePathsClosure(paths)])
|
||||
let flaskaRouterBuffer = new FlaskaRouterBuffer()
|
||||
flaskaRouterBuffer.paths = paths.slice()
|
||||
flaskaRouterBuffer.compile()
|
||||
func.push([testStrings, flaskaRouterBuffer.match])
|
||||
|
||||
let flaskaRouterFast = new FlaskaRouterFast()
|
||||
flaskaRouterFast.paths = paths.slice()
|
||||
flaskaRouterFast.compile()
|
||||
func.push([testStrings, flaskaRouterFast.match])
|
||||
|
||||
let maplPaths = paths.map(x => x.path.replace(/::[^\/]+/g, '**').replace(/:[^\/]+/g, '*'))
|
||||
const maplRouter = createRouter();
|
||||
|
@ -51,15 +60,15 @@ for (let route of maplPaths) {
|
|||
}
|
||||
let maplMatcher = compileRouter(maplRouter)
|
||||
|
||||
func.push([testStringsMapl, maplMatcher, maplMatcher])
|
||||
func.push([testStringsMapl, maplMatcher])
|
||||
|
||||
for (let [tests, _, fun] of func) {
|
||||
for (let [tests, fun] of func) {
|
||||
console.log(`--- warming up ${fun.name || 'mapl'} ---`)
|
||||
for (var i = 0; i < 10000; i++) {
|
||||
for (var i = 0; i < 100000; i++) {
|
||||
tests.forEach(fun)
|
||||
}
|
||||
}
|
||||
for (let [tests, _, fun] of func) {
|
||||
for (let [tests, fun] of func) {
|
||||
console.log(`--- Sanity checking ${fun.name || 'mapl'} ---`)
|
||||
for (let a of tests) {
|
||||
// console.log(a, fun(a))
|
||||
|
@ -73,9 +82,9 @@ for (let [_, org] of func) {
|
|||
printStatusHelperText()
|
||||
|
||||
summary(() => {
|
||||
func.forEach(function([tests, _, fun]) {
|
||||
func.forEach(function([tests, fun]) {
|
||||
// console.log(tests, fun, tests.map(fun))
|
||||
bench((fun.name || 'bound mapl').slice(6), function() {
|
||||
bench(fun.name || 'mapl', function() {
|
||||
return tests.map(fun)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -611,7 +611,7 @@ export class FlaskaRouter {
|
|||
}
|
||||
output += '\n' + indentString + ` },`
|
||||
} else {
|
||||
output += '\n' + indentString + ` params: {},`
|
||||
output += '\n' + indentString + ` params: {},`
|
||||
}
|
||||
output += '\n' + indentString + `}`
|
||||
return output
|
||||
|
|
|
@ -674,7 +674,8 @@ export class FlaskaRouter {
|
|||
}
|
||||
|
||||
__treeIntoCompiledCodeClosure(paths, tree, staticList) {
|
||||
let output = 'return function RBufferStrSliceClosure(str) {'
|
||||
let output = "'use strict'"
|
||||
output += '\nreturn function flaskaBufferStrClos(str) {'
|
||||
if (staticList.size > 0) {
|
||||
output += '\n let checkStatic = staticList.get(str)'
|
||||
output += '\n if(checkStatic) {'
|
||||
|
|
1235
flaska_fast.mjs
Normal file
1235
flaska_fast.mjs
Normal file
File diff suppressed because one or more lines are too long
20
test_fast.mjs
Normal file
20
test_fast.mjs
Normal file
|
@ -0,0 +1,20 @@
|
|||
import { Flaska } from './flaska_fast.mjs'
|
||||
|
||||
const port = 51028
|
||||
const flaska = new Flaska({}, )
|
||||
|
||||
flaska.get('/', function(ctx) {
|
||||
ctx.body = { status: true }
|
||||
})
|
||||
|
||||
flaska.get('/:item/asdf/herp/:derp/bla', function(ctx) {
|
||||
ctx.body = { item: ctx.params.item }
|
||||
})
|
||||
|
||||
flaska.get('/error', function(ctx) {
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
flaska.listen(port, function() {
|
||||
console.log('listening on port', port)
|
||||
})
|
Loading…
Reference in a new issue