From 0e079d111f86f04202f4b9ef6c647c50fcf50c84 Mon Sep 17 00:00:00 2001 From: Avior Date: Fri, 30 Aug 2024 16:19:48 +0200 Subject: [PATCH] perfs: speedup Git file last edit lookup (#531) --- bun.lockb | Bin 3548 -> 4248 bytes server/bun.lockb | Bin 87998 -> 88363 bytes server/compiler/utils/util.ts | 39 ++++++++++++++++++++++++---------- server/package.json | 3 ++- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/bun.lockb b/bun.lockb index 70c1e4ffc057a8c03248f2b5769ae807216c9b25..9226ec6dc1f540e9e2aaf8dc90324a1a2375c235 100755 GIT binary patch delta 1166 zcmca3JwtJVp4LZp+iwk@+j>8i3qFYNbI5qt=#b}ecyaJ82A%LE?G51^0t{fl#V|2I zY+@b$& zV42Lws6M%YQG^v_7!#OxfKh;x4agG)Vh)hVBqj+)Fk`X<6A!O7&`d_46bMU!H8?PG z2<8L1RzMjMpeWE*20oY!(@Mt4rx@)RUrp|0vS*TGntY0>ND!!ifdhy^W^jV&$$y#b zd4UXs=;TV~m`I>JBf~%be_$FU4FN1hx3+yd)Xd<<|8`}v8@IpJl=qh3KDcHEy}W$! zJjY$(2V30RUdMl&a!T-0<+0-iL1$UEb1M9}+g_V%BQll54{>%T|a&+nRI z8~>sCc*~cCH=-jocA6iaoairQdYk3=#fbmk_VH$O76<4DH)ZZ&+w6L&?4_ReV*?J; zBllf2Js*p-BDszk<}@J9viEJ5{qp~6W#?I9R^%kUtJ<))IWR)1{^+M#??@ZoBZ|i5 zi{w|@h)6je4sY;Io5|NaRqD_+sY`1l52gH4aocdbpK-ym4H|8DTdD=h6dOYO@v*O%pm)fc=eS^azFWV6k$_+v6ljE)HHxoPXKu%aOE z6_WEnQ4Iqu^LHGsUfaDvc3*_Qz~`Tn@2+`byKJpi#Qz&-`d>+GpRxM<`CI%;WmrM`YHWk|l@CE)>_>tuDz>3^X{(IPq|?UH^oY2Nn9&H=^Y4oxF;8JI85Hc zq2UDcEjv&cXea|HazF_h#D=9h7ATtuNP|-#khTD38xTm~p8So&Ob%oWNE=8C$S9Dq z2~Z_FKuXjmXK;$hfuupoU`jyr3#hU;Jd>w!Y6$?H*l>zXbFa5S;};IbIK#8gJwrVsGX{pV$+2A89CbzpdWJ@N7LzA%NlkX* z5}Mq>rNm_c&MOQI6}*$Ta5+u>!R5fU0xHBHFxiQ_joDPsWO5*n+GHJG0cJBjqsc5h z?rdNiEr7x%92R;d=~YRkd6W5g6eq9akzzEOe1gXSq?*M@&k&?lezHD~$K)S8PXJ!3 BRCE9U delta 804 zcmbQCct?7Io@PvJ|0bLAZvQ!pg!57Z{nXk;i%%O{Oj~^N&8K?zZNK06@G^h_$HZ`X zrVNgW6&8%C6A#)?7GO+aWd_PHPgZ19pS*xkgp~`(V*~RZFbYimz+^F5gGper0;9&{ z1STF{D+Y!JMxY81hNwzlC z0hXnubJni$x%9@t`?c={#{Dd@lTWQ|xAv___xlobsBTI0jh!N^J}mshm%4K9)_a#G z^7EA53@?mf+?3K~RJq`ydNjl2cP!#Qq04RLAE&xpPGw5CFX{X{e@49qf5X-!pKkR#O#z<+_OyoiZECL$VGO z-ei&6c5v^`$rFzYwfwP4U0En~WW_ZPp@R9XDqS9tW!oJ-Z@U?lex=DJB#B|NADj4O zQFaF&BrDh_C$jqhV@rJU5%xWsS8zlya&6#%So?-!at@cnGEAKb} diff --git a/server/bun.lockb b/server/bun.lockb index cb672bee56fa1c209c3d34f5df8e57d72d8e1d81..e2df89fa4a295992eb0f05f2e3bfa73626470abc 100755 GIT binary patch delta 13184 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 GTKxz9h$6TE delta 13265 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 diff --git a/server/compiler/utils/util.ts b/server/compiler/utils/util.ts index c45c4a9f4..d3d550d7e 100644 --- a/server/compiler/utils/util.ts +++ b/server/compiler/utils/util.ts @@ -1,4 +1,5 @@ import { objectSize } from '@dzeio/object-util' +import Queue from '@dzeio/queue' import { glob } from 'glob' import { exec, spawn } from 'node:child_process' import { writeFileSync } from 'node:fs' @@ -126,7 +127,7 @@ function runCommand(command: string, useSpawn = true): Promise { }) } -let lastEditsCache: Record = {} +const lastEditsCache: Record = {} export async function loadLastEdits() { console.log('Loading Git File Tree...') const firstCommand = 'git ls-tree -r --name-only HEAD ../data' @@ -136,19 +137,35 @@ export async function loadLastEdits() { console.log('Loaded files tree', files.length, 'files') console.log('Loading their last edit time') let processed = 0 - for (let file of files) { + const queue = new Queue(1000, 10) + queue.start() + + for await (let file of files) { file = file.replace(/"/g, '').replace("\\303\\251", "é") - try { - // don't really know why but it does not correctly execute the command when using Spawn - lastEditsCache[file] = await runCommand(`git log -1 --pretty="format:%cd" --date=iso-strict "${file}"`, false) - } catch { + await queue.add(runCommand(`git log -1 --pretty="format:%cd" --date=iso-strict "${file}"`, false).then((res) => { + lastEditsCache[file] = res + }) + .catch(() => { console.warn('could not load file', file, 'hope it does not break everything else lol') - } - processed++ - if (processed % 1000 === 0) { - console.log('loaded', processed, 'out of', files.length, 'files', `(${(processed / files.length * 100).toFixed(0)}%)`) - } + }) + .finally(() => { + processed++ + if (processed % 1000 === 0) { + console.log('loaded', processed, 'out of', files.length, 'files', `(${(processed / files.length * 100).toFixed(0)}%)`) + } + })) + // try { + // // don't really know why but it does not correctly execute the command when using Spawn + // lastEditsCache[file] = await runCommand(`git log -1 --pretty="format:%cd" --date=iso-strict "${file}"`, false) + // } catch { + // console.warn('could not load file', file, 'hope it does not break everything else lol') + // } + // processed++ + // if (processed % 1000 === 0) { + // console.log('loaded', processed, 'out of', files.length, 'files', `(${(processed / files.length * 100).toFixed(0)}%)`) + // } } + await queue.waitEnd() console.log('done loading files', objectSize(lastEditsCache)) } diff --git a/server/package.json b/server/package.json index f802fc940..df78e30cd 100644 --- a/server/package.json +++ b/server/package.json @@ -12,11 +12,12 @@ "dependencies": { "@dzeio/config": "^1", "@dzeio/object-util": "^1", + "@dzeio/queue": "^1", "@tcgdex/sdk": "^2", "apicache": "^1", "express": "^4", "graphql": "^15", - "graphql-http": "^1.22.1", + "graphql-http": "^1", "ruru": "^2.0.0-beta.14", "swagger-ui-express": "^5.0.1", "yaml": "^2.5.0"