From 110c697a5a0b27c85b994ee1f3a6b0a710cdabdf Mon Sep 17 00:00:00 2001 From: aquapi Date: Sat, 30 Nov 2024 08:28:16 +0700 Subject: [PATCH 1/3] Further optimize the Bun solution --- src/bun/bun.ts | 22 +++++++--------------- src/bun/byte.ts | 17 ----------------- 2 files changed, 7 insertions(+), 32 deletions(-) delete mode 100644 src/bun/byte.ts diff --git a/src/bun/bun.ts b/src/bun/bun.ts index 640b3b5..4c9e62d 100644 --- a/src/bun/bun.ts +++ b/src/bun/bun.ts @@ -20,17 +20,16 @@ Bun.serve({ const pathIndex = url.indexOf('/', 12) + 1 const queryIndex = url.indexOf('?', pathIndex) - const path = - queryIndex === -1 - ? url.substring(pathIndex) - : url.substring(pathIndex, queryIndex) + const path = url.substring(pathIndex, queryIndex >>> 0) - if (path.length === 0) + let len = path.length; + if (len === 0) return req.method === 'GET' ? hiRes.clone() : notFound switch (path.charCodeAt(0)) { case 105: if ( + len === 3 && path.charCodeAt(1) === 100 && path.charCodeAt(2) === 47 && req.method === 'GET' @@ -42,16 +41,8 @@ Bun.serve({ const nameQueryIdx = url.indexOf('name=', queryIndex + 1) if (nameQueryIdx === -1) return notFound - const nameQueryEndIdx = url.indexOf('&', nameQueryIdx + 1) return new Response( - `${path.substring(3, queryIndex)} ${ - nameQueryEndIdx === -1 - ? url.substring(nameQueryIdx + 5) - : url.substring( - nameQueryIdx + 5, - nameQueryEndIdx - ) - }`, + `${path.substring(3, queryIndex)} ${url.substring(nameQueryIdx + 5, url.indexOf('&', nameQueryIdx + 1) >>> 0)}`, queryHeaders ) } @@ -59,7 +50,8 @@ Bun.serve({ return notFound case 106: - return path.charCodeAt(1) === 115 && + return len === 4 && + path.charCodeAt(1) === 115 && path.charCodeAt(2) === 111 && path.charCodeAt(3) === 110 && req.method === 'POST' diff --git a/src/bun/byte.ts b/src/bun/byte.ts deleted file mode 100644 index 9b1d5f7..0000000 --- a/src/bun/byte.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Byte, query, send } from '@bit-js/byte' - -const xPoweredBy = ['X-Powered-By', 'benchmark'] as [string, string] - -// Extract the 'name' parameter value from query -const getName = query.get('name') - -// Serve directly -export default new Byte() - .get('/', send.body('Hi')) - // Send ID with query - .get('/id/:id', (ctx) => { - ctx.headers.push(xPoweredBy) - return ctx.body(`${ctx.params.id} ${getName(ctx)}`) - }) - // Yield body - .post('/json', async (ctx) => ctx.json(await ctx.req.json())) From 2975f9900fb8b2c300e53c94b7aaf9bc26c38bab Mon Sep 17 00:00:00 2001 From: aquapi Date: Sat, 30 Nov 2024 08:40:33 +0700 Subject: [PATCH 2/3] Add Mapl --- bun.lockb | Bin 120897 -> 121286 bytes package.json | 96 ++++++++++++++++++++++++------------------------ src/bun/mapl.ts | 16 ++++++++ 3 files changed, 64 insertions(+), 48 deletions(-) create mode 100644 src/bun/mapl.ts diff --git a/bun.lockb b/bun.lockb index cf8f1e1a4386c3c5be1dcd90bd158348e9823e93..93f4dc57edc821b16f7afcb0c3f2a3ed09dbb538 100755 GIT binary patch delta 13237 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 B7D@mB delta 12850 zcmeHtd0bS-w(hQ$1~%GG$Yg^EXdD}vq-hW~IDpy;&Nu~W6bTUo0Ws~=&ABlqSB-kg zn~L!yMiVm}W1^23L}L^+=Q<@$@i@geB%WxD#vGFvOw{|WJ;ZZ-$$S65-|HW>SAA8h zR;^mK)~el2{jJ`wX|vyo*dD&u)B3(JCH|y+*<)obri|V-s)s+bY!9h@b-T|ul{q6S zwwz)TeNtEEN1Bc&uY9U|e1EjGl_YPitIADX`%IG58o0(?S!^q8_84i_O~L@t_v;KjEsbm@^aoI&SMLNiEUt2P%W+p`B>9 zPM7;hQXsI8za)i%E&y&1T2fItjpn%p+(D8?d7sv`T7=OgV7^Yvb%mx^6<0rj0kgnI z{Vq^i-~dyBa8IBhBeVzYpQKCE2b4ovtbBQcN-`z*NvsnCl45E zcn5(J|FqKS)2ZDKj6bidN);~I^nTaWimI9Dj{qhuEIPdh8xg*t(T?7us6?QlI~Gl9 zz5!|lUCw8jLb4L{t?CX+({|FSfG&{eEibNlqGDRLv=o@suG8t;L7Mt&_yJQl)|P*7 zitO=gh$bTsW~Qaho>^I1Sqy{e2Hb&uGTeLI(W0BDO-D^)aj|WBX;pQNkB+BS(6S}z zJ1C1uyf>h1n}3;kTCuioU!k8gx*M*|dPc{F`KJ|E*Hl%wrK4!4S*KQ1%qT6cmSz;Y zOR7pM`Gpp8=|1$4rdvSCN5(~JGS>o=kGRXKW|J;{unNg2>a5K*7LD^=9uoPt|^`FmcD&V zo2$CGytcSXlFk9QLx0uuX;U#wIt)y9sVtqTTI^1DZSKRMw5A)Nw4+mXd>Rz?Oz?hy zN-#PM0qcRWtKKD`*dcFqWm#!Wf+Vf#rA=VtrRHv)NSmf!L~qT%E&`J}b1{l&1t@LD zhfs_BuT>wdeG4$PzYk2bsCMs!hx+bNxrnt&gRV*1g zZtka9<|R1QpeEG@x1bdo5fqJf+NIKJS5=kEEd>M9nmia! zv)Uk!FtV7M9kyVt@P3c?O;pHj8*(&(n?MOWb-Gq>|1+q%F+((gOz&sF5aivXx0{D* zgO1W_+ngs{HPUjOaYLS_`9ffFswujKJ{}=S z9f9jX+k>vt>2jUcfzp;#>lFK};-5!JQfIU;8m%cj7nBwfG6o?+m4jd)6J7zO6`cTW z54r%91Qzpl0g++j$7x)T9%z559};lKuYP=cf7W)+`<=!KHk-HX$xHDJ3?}!jA=YV|{otIA?K3 zu)^NuZalB>Mm%G9bFdNJ|H{zMc zoAF%99bt<3h%eq@czRfxEc>AbDU3G-+t~o#9Hy}K+|f~y!~Jo*YdxWMxdv#Mh9d0p zZlE|7Wrf(;E$*-?awg1(poBiGqn$m^8?6f4&zr4^$rQj-!!uYccZVzHLih=$4oNe= zgxX+!FEma51+|I4i5tt^5ei$x8zU6+F6_}@z91xx`Ef@lMNWe^C4jR9XJK|$&Ko-^ zY!h$Bb2WEFD$L8>k&1aAb}ozW#3(awj#T7$_&6K`qe$I4?(VF}JJCi<@Zn8Z-VGo` zEzH0=+vWJSk`$}6z+~v*z3Fz&r`fPN-+hsB2C_kS|-|=I{HT-eUagI z*@5(_`45Y>n`Z&VsbkimMmj+jOmPCJHxM+0!5{F(Zi+krM^CcamX)94uLEDsAaoy) z?v${cFK_Iw$df`fB~%ge8lWUqr6w5a2zU2TEvnUKg?dJY?&C1{lBGSxDQHvuJn?Karpn(tGFv-zXqna`!$QR^=XiPN( z$lHL(LU1P-<>tda?0NT2S|3!l+T{WrF?Huw0VVN!aNPae-A9rABPA&pawN`z?6M1p zmS^U5@P)NNT11jlU+3;P#cV~cQ-ez`Lrqf>3u13^N4&zm;qLf9$T>-|anty*_-^tu zQIdq?O4|x(;YfgS(57t}3?}!BHhc=3#pd(o1cklB9f=C^fICq!C&j>j$Yg9fZ%$O? z&A_xp>UPQ(bp#K#+VL*kn54+rU9>HQ-@{r9fhhQ3yCA#y9Uxc)N#Y`Ev7dQ!vci7i4!a^N-L&=isZm!AMDc0j zS$4a;6Nt2hBfy1j0Fhg0x+iwm`edFJZ~XqIZB?p!udCckG*lb=D2ED!g>F72Uq zO<1w&f)@di8)D%xc6l$*5S6nD%Z=z`aFQ`gfQZvy)pwVURD;R)fM}Z$ z1`fO23pUpbjm^c8=T;Q?KHA2r9F&ts#~a5HnRO$OrUNm2iP?yQ_m$fj5`J?Y#Dds`4Mj%q?m7^zqgvU!?8vfjKpEWVL+PO zk>4x@qUq5GYaQgx*$R`nBS(=Z zR^&I(pee^7=o{XQHU&nabwFXb!&)G+q3X=$V}$s<$TZf1HxI$#kHARf_lBgIe?cun ztxZUWBdFWT! zW;K-F03uH8$YUw=wSlaKVTgrjn99!6d#1?~P}9`MaVNhHL=z)XVB)JlRU|%YW;Y+HI3co&AEy^8rf8rI5Nc_0Dl-nesGL8<|*`wf@eB+j8NoN z*bA}%@;zQkjsj6o;5fsU4umG8jCw@L&;EueI1U4mGG;oZ%>jep{;E$-L=FB#V)hhT6>^=goJw|U#EC>Myv1*i#T5fH)$<0uY40iv0; z}KW~c+w#!*t(s&i^7>^cyw49N!;8tBxd_^I>F1)@HrLX6uEM4ql? zh#!Dx26d0*IJk_qTH>4zM4Xx~uL6;tn#|KWLiPY>+u>R|)vPog2%&&5BV9NU$;3GV z&I3Bqba?<^siZVKh&jlEI?6dy2v) z@J2kB@#ZOtd~%HD!^oRpwsLo&+K=Z8ytz=3FC)VvVn{UvT+BF0LaKx}){V9^7jJYa zYy)q0VS;fywJ3vi=I$bejj3-eit+cfmn3N`lOz*p11SEaZS;7A`T_4kdkfG#I^SMU zGw^;;8h=o4Kcv&cI{gHcK14~*XP`9h48!+l>N|@E3HV&6U+DBAC{6gKj<4wWs*b+_ z^+Eql9p3`QpY*+sZ|n3&P@3>ADE_2hbowjv0O9ki-f)k4@gYjp`*`?+`jU1!rFK6Z z{~jfUTB4t58=VH~{6wi5q~oAMqXJ4R4F#p9j(E^SR-K0HGy)WVQlySM>o{7+G1Q3< zQ5xT+zNzfC-~Zob)hPcD@AB%}4*7iRr%wL!Cl+ow;xs*w_{1aQ_*Rn&#a`@VQ1d+ddNyIjlN&+wnxhdM8P zT{q{iN#Vl|oquhN3%?qD24rG%QYet7G(r*xRLP zrV7{I)k^O!OD8?wV&ks0fsO;$`)9c4EuT~wdNb^(X>QBs_ud(u8Ce;%Z>?{|;q4o* zUENjD?j!#4nNV&y>ts=U!dck+EUXU{!{u|Z_c>VqoRf9sjX>LgB0hJrZoKq!*!y!> zAE*ZpI}dxGhxN}pSucJ7Xg`qc3n#O2_ZP7D7qC81AKv2v?0o^&zu;u?{0z`(p!ADQ zmdKyG2zy_I^?~|w$0gYN60Cp8$?W_Z&{d$}mz~T}zxp!wVQcDbU%%znniA9^wN-}TFW4D_u( z`|D#2kA0~D_|~kN_GpSYV`rIz?my5z)EK31g8D0Ol8JL_FN&_-F;7ljfeeQapMpL*_Cse(_e*g_)u=v^|J&Z-@FpViy2R_UPL z7LPWP))Hj}3Tcxlm;)k`bao4xUevq#>TNKLRE0tsCF^Z%P>+Hv($FqOl86+&s~wuY zLZOdCZ==I`6G|(TRJ4&6fhYoX`t%d)AmXufojnLmujpMFdYdW>?Z2jrvkvxd6xoGN zr&cHyl-4M8sB}VkKx4(aR2I^XQYD?9uc5q-vOzSZGNqwI8v6_DONUMvN-#=$lrjvX zqxCD4BPd5vj-zZx*@3bX3|Z5LjKSmr5#FJlr|_WQA{Wd^&o zrMHfawk|p*8PrCFL^f%D@|6Ams3<~DLVRpuY<%1n^uTCdWpT`%>`lFF z>X`V%*d%GYh#$hj*nZ&zv3>@=Q1FFL>{oxG>V*iJHBOcAt?&$CTdjA&U;)FEUBaD5 zvtIXr0ZJu9ke|pK$`Y;Qbd)w9TOzV=-2dbP7?NU>NbgSK<)N5@tVv2f_u`4K)^FdP zM^j*igk&i}92?3?SbyPgvaM{e_zp)V8!zNxERnfH`Y@nbBA?J)aeg8T5$lJsaQ3tq zS-`@?>0zuRdtTfg#!3Q>|CW>=%nKg=rT2l!|0PjAoJFzeV)<}LnJeBN4k>rVc_6EC zH$o}+XYJhqYu`~7ii^dU&pgpCS5=`Gh}F1zG05Hjr5#O!EGi#t7;o_16_<$5xO)*1 ze$TV=uU{X~<-r1N#im?!UgBd5#4kkjNwmROt~!@-Pvcg@vny8nUrAAAB#;$vi3NGT zGwM(t1p9~w)Tay9L_y;45f2;lMBNDNl5w45-Vc9wcs5p!H?g?bgjoFGAuSR|i2bq{ zIRk4kE~oTiTofE~{a|7Xp+#(BlJuI07zqaBLPc15fGOF}9RNk+V(||uNxC6Mf`Q!= zGl*;gKhYM-FiLv;# zL0T@9(U|ECF<~?tZmsK}9);fFt3R@T8L;$Ss0p*sa+Zpw(U2#^kKki##DFnCZ;Lr& zSRH#$w3`hXJ4E1Ewub#G-Wv;4C%!Aj!j1bM&6en`L7A`KGO+;&FpA&1;@()uSS#Yk zfqjc`64@t;$3gy4QBP#NVEJe~Bdq!0{7U2j_5B?kDKjKKyd`qS??7$g)_1V02rbo< zRqey9#(S*@~^~6f(V_cE=u6_3Dd)Y@+OzfO)a=H^fe2Fs|NY^t>GS?OS&{sfwwBGzm=CZw&#*23E>pPm#v0;!ln4!>^R z7qh^C&{#rz0r(-0(#x9pz0Ftl-nm4P8LxV5u-FBLzQ#?NmbE3GlNavyqFfkH$DOnW zFWGc<&&l|%cz4-~SQ@IG3WJ3O>#!OZgL2Q--kn+bQO}1_zeQw~s0mA5ueL(5r-U6f zOz?Y)hRVM@fsCnJNoUavBEBlc;D5`dhN=F*68K#(LqyELCTNEjPLCNgkkgHOMJNAy z_Q116BNxDMSTLPYh2jJlST7M(hEdw?h?!+9n~fD)%aBI4!zg5s?1kNjWP5)a*;aiW zB4^$&zAuB#UlJ|LK{ku7<&Yr6gmO%{7rzd}l3v%JDxY!I*5TcpUZQB!XQGMNPm6OP zwm+6mZ~ko|;niQByg531;)=HH8xb{=RWOHGITHegij5$Ff4~;S7K`SYP{g?VwBn}? zuWpZM@h3H6)OW~S;i|yOSBdv3u&qlnwNT0JvuAzS!Mz>8hq$5;ctLzwfn-yVrM>kP z&FYe#*|H72j?l3P@7yHfE1{50I4fZQhwu=|7WI{gX^*hZ0$L^VW?>TJvQ)*MC7U;` zxwco0GrYLsJB;{`Sx_cg90MOxz;$9b?ojPG{*R)!s^4F%x;s1>ugfB`O67A@sdJSB zg&P-&dTdtS|MQM1m5`pSX?Q1F+^S-@X(L8Hg<&nlS|TALy&AI^_mcw6I}TgcJl7Ay z;?;vmvWZz>FlFY5rPVCdb42D`78D76jJr^W&aA%k&zIM2dN_4$ zj%Z!OLX(YaRd@dM>Ao&m>BGR00{ddDadB%~oHF#EVr7Ni1Iw??5tA`C+_>`f&)hEJ zeGwk~Pv9g`Nx{9PDe2V&M(@1eOzDT z8rd_)3#_%a+9Xv6)jtA;Xr2?k>1OAbhT8Bovw$KCOViD*&t;fTr&iSw~2=y z&T7a>6>H`|>?5ZAzpAUh0b2if0^JWt|$^^8^gMjx5pr2E37YKfU{97F#u(%^Zd z`4OnQZ|EOz8;U$Ssv=kXG?yi?-$}EHrmu6wJM&mVuyI4rxaLMK5t}H^&SRa}Y;kNM zqON#^mR2{u{Nvm6)_8W9etX@j7Pk3_&N>ml0A#sv5n3nafrJ}Z`$A{U3qNu;4)2D> zOWMaH#OC?XOB0XpKlkP%GiX9g2Sm z=U0V0lj#KmY0w^+fw@yC*#&3V#-2VBWR_$>tZ;jsvh(ASktY5!zP;3}5^>02uCopTE^+0!E zI#kP|R|GF?nz23^7(WJj#p2x?_HT**bTBY}B=!FF_{~=~P3f7oy8sPzo*uq-Vb8o0 zey|#tz7CF=K4x;j)9>$@4~!dBUeB7;Q&;y4f1|BeThH64M9(_*LCd1j8rzfAeTv*Q z#o|I83u$;z$0D-Ds|T66;p%?2)xZ0{aP+aMj5hVhme`t-xtT^ME`kf!pIJnQe`%OY X?C6*)3f8f%;?@b~*YMgg7UTav_mGUN diff --git a/package.json b/package.json index cae0567..f080e04 100644 --- a/package.json +++ b/package.json @@ -1,50 +1,50 @@ { - "name": "bun-http-framework-benchmark", - "scripts": { - "benchmark": "bun bench.ts", - "kill-port": "kill-port 3000", - "ts-node": "ts-node" - }, - "devDependencies": { - "@hono/node-server": "^1.12.0", - "@types/bun": "^1.1.6", - "@types/express": "^4.17.21", - "@types/kill-port": "^2.0.3", - "@types/koa": "^2.15.0", - "@types/koa-bodyparser": "^4.3.12", - "@types/koa-router": "^7.4.8" - }, - "dependencies": { - "@bit-js/byte": "^1.6.1", - "@elysiajs/fn": "^0.6.1", - "@hapi/hapi": "^21.3.10", - "@nbit/bun": "^0.13.4", - "@nestjs/common": "^10.3.10", - "@nestjs/core": "^10.3.10", - "@nestjs/platform-express": "^10.3.10", - "@oakserver/oak": "^14.1.0", - "bunrest": "^1.3.8", - "elysia": "1.1.18", - "express": "^4.19.2", - "fastify": "^4.28.1", - "h3": "^1.12.0", - "hono": "^4.5.3", - "hyper-express": "^6.16.4", - "kill-port": "^2.0.1", - "koa": "^2.15.3", - "koa-bodyparser": "^4.4.1", - "koa-router": "^12.0.1", - "nhttp-land": "^1.3.26", - "reflect-metadata": "^0.2.2", - "rxjs": "^7.8.1", - "ts-node": "^10.9.2", - "typescript": "^5.5.4", - "ultimate-express": "^1.2.5", - "vixeny": "^0.1.47", - "wobe": "^1.1.7" - }, - "module": "index.ts", - "peerDependencies": { - "typescript": "^5.0.0" - } + "name": "bun-http-framework-benchmark", + "scripts": { + "benchmark": "bun bench.ts", + "kill-port": "kill-port 3000", + "ts-node": "ts-node" + }, + "devDependencies": { + "@hono/node-server": "^1.12.0", + "@types/bun": "^1.1.6", + "@types/express": "^4.17.21", + "@types/kill-port": "^2.0.3", + "@types/koa": "^2.15.0", + "@types/koa-bodyparser": "^4.3.12", + "@types/koa-router": "^7.4.8" + }, + "dependencies": { + "@elysiajs/fn": "^0.6.1", + "@hapi/hapi": "^21.3.10", + "@mapl/app": "^0.1.6", + "@nbit/bun": "^0.13.4", + "@nestjs/common": "^10.3.10", + "@nestjs/core": "^10.3.10", + "@nestjs/platform-express": "^10.3.10", + "@oakserver/oak": "^14.1.0", + "bunrest": "^1.3.8", + "elysia": "1.1.18", + "express": "^4.19.2", + "fastify": "^4.28.1", + "h3": "^1.12.0", + "hono": "^4.5.3", + "hyper-express": "^6.16.4", + "kill-port": "^2.0.1", + "koa": "^2.15.3", + "koa-bodyparser": "^4.4.1", + "koa-router": "^12.0.1", + "nhttp-land": "^1.3.26", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "ts-node": "^10.9.2", + "typescript": "^5.5.4", + "ultimate-express": "^1.2.5", + "vixeny": "^0.1.47", + "wobe": "^1.1.7" + }, + "module": "index.ts", + "peerDependencies": { + "typescript": "^5.0.0" + } } diff --git a/src/bun/mapl.ts b/src/bun/mapl.ts new file mode 100644 index 0000000..39fca24 --- /dev/null +++ b/src/bun/mapl.ts @@ -0,0 +1,16 @@ +import { router, jitc } from '@mapl/app'; + +const id = router() + .headers({ 'x-powered-by': 'benchmark' }) + .get('/:id', (c) => `${c.params[0]} ${new URL(c.req.url).searchParams.get('name')}`) + +const app = router() + .build('/', () => 'Hi') + .post('/json', { + type: 'json', + fn: async (c) => c.req.json() + }) + .route('/id', id); + +export default + await jitc(app, { exposeStatic: true }); From b029ed0a32d1c2dd164fa4e270f34f4d927b6f5a Mon Sep 17 00:00:00 2001 From: aquapi Date: Sat, 30 Nov 2024 08:53:32 +0700 Subject: [PATCH 3/3] Add Deno implementation --- src/deno/mapl.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/deno/mapl.ts diff --git a/src/deno/mapl.ts b/src/deno/mapl.ts new file mode 100644 index 0000000..930f7eb --- /dev/null +++ b/src/deno/mapl.ts @@ -0,0 +1,17 @@ +import { router, jitc } from '@mapl/app'; + +const id = router() + .headers({ 'x-powered-by': 'benchmark' }) + .get('/:id', (c) => `${c.params[0]} ${new URL(c.req.url).searchParams.get('name')}`) + +const app = router() + .build('/', () => 'Hi') + .post('/json', { + type: 'json', + fn: async (c) => c.req.json() + }) + .route('/id', id); + +jitc(app).then((result) => { + Deno.serve({ port: 3000 }, result.fetch); +});