He notado un rendimiento muy lento en la lectura de archivos en deno, me temo que podría estar haciéndolo mal. (¿algo estúpido?)
const file = Deno.readFileSync(path) ¿alguna sugerencia? u otras formas más rápidas? ¿Debería usar Deno.run en su lugar? ¿Cuáles son los pros y los contras de Deno.run según tu experiencia?
Actualización #1:
Encontré este módulo usando secuencias en las que da un poco más de velocidad, pero en comparación con bash es muy lento:
$ time deno run --allow-read https://deno.land/std@0.126.0/examples/cat.ts movie.mp4 | wc -l 4066379 real 0m1.890s user 0m1.608s sys 0m1.355s $ time cat movie.mp4 | wc -l 4066379 real 0m0.295s user 0m0.098s sys 0m0.372s $ du -sh movie.mp4 995M movie.mp4Actualización #2:
Debido a las preocupaciones sobre la velocidad de la red y la velocidad de lanzamiento de Deno, hice este script donde ambos se ejecutan respectivamente:
import { copy, writeAllSync, } from "https://deno.land/std@0.126.0/streams/conversion.ts"; const filenames = "movie.mp4"; //########## DENO ############ const before1 = performance.now(); const file = await Deno.open(filenames); await copy(file, Deno.stdout); file.close(); const after1 = performance.now() - before1; const text1 = new TextEncoder().encode(after1.toString() + "\n"); writeAllSync(Deno.stderr, text1); //########## CMD ############ const before2 = performance.now(); const p = Deno.run({ cmd: ["cat", `${filenames}`], }); await p.status() const after2 = performance.now() - before2; const text2 = new TextEncoder().encode(after2.toString() + "\n"); writeAllSync(Deno.stderr, text2);Resultados en el mejor de los casos:
$ deno run --allow-run --allow-read test.ts >/dev/null 636 82Hasta el momento de escribir este comentario, me gustaría mencionar que no hay soluciones con respecto a este conocido problema en deno.
Hay varios temas abiertos en denoland/deno Repository. Si hay alguna actualización, publicaré una actualización.
Por mencionar algunos:
Si encuentra alguno, por favor hágamelo saber.
Gracias.