From e6c5f25108b54ceed313cf7516eecf9251152e31 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 5 Dec 2024 15:50:56 +0000 Subject: [PATCH] faster harder stronger --- sepa/bun.lockb | Bin 468592 -> 468960 bytes sepa/importer-bench.js | 30 +++++++++++++ sepa/importer.js | 94 +++++++++++++++++++++++++++++++---------- sepa/package.json | 1 + 4 files changed, 102 insertions(+), 23 deletions(-) create mode 100644 sepa/importer-bench.js diff --git a/sepa/bun.lockb b/sepa/bun.lockb index 7493719a9498a422c4298fc1ef18cdd81bf65636..82b22b8f72c0656091e1bf97718b3ca52c78d5d2 100755 GIT binary patch delta 88736 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 delta 88776 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 diff --git a/sepa/importer-bench.js b/sepa/importer-bench.js new file mode 100644 index 0000000..18b0535 --- /dev/null +++ b/sepa/importer-bench.js @@ -0,0 +1,30 @@ +// @ts-check +import { run, bench, boxplot } from "mitata"; +import { execFile } from "node:child_process"; +import { promisify } from "node:util"; +import { main } from "./importer.js"; +import { rm } from "node:fs/promises"; +import { readFileSync } from "node:fs"; +const execFileAsync = promisify(execFile); + +async function fibonacci() { + await main("samples"); +} +bench("main", async function* () { + await rm("importer.db", { force: true }); + await rm("importer.db.wal", { force: true }); + await execFileAsync("duckdb", [ + "importer.db", + readFileSync("duckdb.sql", "utf8"), + ]); + yield () => fibonacci(); +}); + +// await run(); +await rm("importer.db", { force: true }); +await rm("importer.db.wal", { force: true }); +await execFileAsync("duckdb", [ + "importer.db", + readFileSync("duckdb.sql", "utf8"), +]); +await fibonacci(); diff --git a/sepa/importer.js b/sepa/importer.js index 924f1f4..4df9bc7 100644 --- a/sepa/importer.js +++ b/sepa/importer.js @@ -3,7 +3,7 @@ import * as fsp from "fs/promises"; import * as fs from "fs"; import { CsvParserStream, parse, parseString } from "fast-csv"; -import { basename, join, dirname } from "path"; +import { basename, join, dirname, resolve } from "path"; import { $ } from "zx"; import PQueue from "p-queue"; import { Database } from "duckdb-async"; @@ -15,25 +15,53 @@ import { } from "@duckdb/node-api"; import Papa from "papaparse"; import { writeFile } from "fs/promises"; +import { fileURLToPath } from "url"; + +const pathToThisFile = resolve(fileURLToPath(import.meta.url)); +const pathPassedToNode = resolve(process.argv[1]); +const isThisFileBeingRunViaCLI = pathToThisFile.includes(pathPassedToNode); // TODO: verificar que pasa cuando hay varios datasets del mismo día (como los suele haber cuando actualizan el dataset con nuevos comercios) -const instance = await DuckDBInstance.create("importer.db", { - // threads: "1", -}); -const queue = new PQueue({ concurrency: 4 }); +const console = { + // @ts-ignore + log: (..._args) => {}, + // @ts-ignore + error: (..._args) => globalThis.console.error(..._args), + // @ts-ignore + debug: (..._args) => {}, +}; -let hasTars = false; -const files = await fg("**/*.tar.zst", { cwd: process.argv[2] }); -for (const file of files) { - hasTars = true; - const tar = join(process.argv[2], file); - queue.add(() => importDatasetTar(tar)); +if (isThisFileBeingRunViaCLI) { + await main(process.argv[2]); } -await queue.onIdle(); -if (!hasTars) { - await importDump(process.argv[2]); +/** + * @param {string} cwd + */ +export async function main(cwd) { + const instance = await DuckDBInstance.create("importer.db", { + // threads: "6", + }); + if (cwd.endsWith(".tar.zst")) { + await importDatasetTar(instance, cwd); + return; + } + const queue = new PQueue({ concurrency: 4 }); + + let hasTars = false; + const files = await fg("**/*.tar.zst", { cwd }); + console.log(`found ${files.length} tars`); + for (const file of files) { + hasTars = true; + const tar = join(cwd, file); + queue.add(() => importDatasetTar(instance, tar)); + } + await queue.onIdle(); + + if (!hasTars) { + await importDump(instance, cwd); + } } /** @@ -194,9 +222,25 @@ async function importPrecios(connection, datasetId, dir) { await writeFile(fixedCsvPath, file); // TODO: remove ultima actualizacion } else { - let file = await readFile(sourceCsvPath); - file = file.replace(/\r?\n( )?\0? *\r?\n"?[uúUÚ]/giu, ""); - file = file.replaceAll(/[ \t]*\n/g, "\n"); + // let file = await readFile(sourceCsvPath); + let file = await fsp.readFile(sourceCsvPath, "utf8"); + + if ( + ["30590360763", "30687310434", "30685849751", "30525705931"].includes( + comercioCuit + ) + ) { + let separator = file.lastIndexOf("\n\n"); + if (separator === -1) separator = file.lastIndexOf("\r\n\r\n"); + if (separator === -1) separator = file.lastIndexOf("\n\r\n"); + if (separator === -1) separator = file.lastIndexOf("\n \n"); // TODO: actually make this work + if (separator === -1) separator = file.lastIndexOf("\n\0\n"); + if (separator === -1) separator = file.lastIndexOf("\n \n"); + file = file.slice(0, separator); + } else { + file = file.replace(/\r?\n( )?\0? *\r?\n"?[uúUÚ]/giu, ""); + file = file.replaceAll(/[ \t]*\n/g, "\n"); + } await writeFile(fixedCsvPath, file); } @@ -209,9 +253,10 @@ async function importPrecios(connection, datasetId, dir) { } /** + * @param {DuckDBInstance} instance * @param {string} dir */ -async function importDataset(dir) { +async function importDataset(instance, dir) { console.log(dir); const date = basename(dir).match(/(\d{4}-\d{2}-\d{2})/)?.[1]; const id_comercio = basename(dir).match(/comercio-sepa-(\d+)/)?.[1]; @@ -259,27 +304,30 @@ async function importDataset(dir) { } /** + * @param {DuckDBInstance} instance * @param {string} tarPath */ -async function importDatasetTar(tarPath) { +async function importDatasetTar(instance, tarPath) { console.log(`importing tar ${tarPath}`); const dir = await fsp.mkdtemp("/tmp/sepa-precios-importer-"); try { await $`tar -x -C ${dir} -f ${tarPath}`; - await importDump(dir); + await importDump(instance, dir); } finally { await fsp.rm(dir, { recursive: true }); } } /** + * @param {DuckDBInstance} instance * @param {string} dumpDir */ -async function importDump(dumpDir) { +async function importDump(instance, dumpDir) { const files = await fg("**/productos.csv", { cwd: dumpDir }); - for (const file of files) { + const shuffledFiles = [...files].sort(() => Math.random() - 0.5); + for (const file of shuffledFiles) { const dir = join(dumpDir, dirname(file)); - await importDataset(dir); + await importDataset(instance, dir); } } diff --git a/sepa/package.json b/sepa/package.json index 2b7e995..b095299 100644 --- a/sepa/package.json +++ b/sepa/package.json @@ -25,6 +25,7 @@ "fast-csv": "^5.0.2", "fast-glob": "^3.3.2", "jschardet": "^3.1.3", + "mitata": "^1.0.20", "p-queue": "^8.0.1", "papaparse": "^5.4.1", "postgres": "^3.4.4",