From 5899083e5dfe0b9d46980c194d9cb89fc86d1089 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 86398 -> 87589 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 2a5bc0dd6997ea6d5c2b25d971b59e7c1ecb3a83..21dd12259926dbc9ace489c2cc8b928a65e28966 100755 GIT binary patch delta 13471 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 BWjz1@ delta 12955 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 H^8Nl7e2=P7 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 424a4621a..b798e5d38 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" }, "devDependencies": {