Я делаю небольшое сравнение производительности при чтении файлов синхронно и асинхронно в узле. Итак, я написал небольшой скрипт,
const fs = require("fs");
const util = require("util");
const read = util.promisify(fs.readFile);
(async() => {
try{
console.time("async read 65MB file");
await read("./size_65mb.pptx");
console.timeEnd("async read 65MB file");
console.time("sync read 65MB file");
fs.readFileSync("./size_65mb.pptx");
console.timeEnd("sync read 65MB file");
console.time("async read 3MB file");
await read("./size_3mb.pptx");
console.timeEnd("async read 3MB file");
console.time("sync read 3MB file");
fs.readFileSync("./size_3mb.pptx");
console.timeEnd("sync read 3MB file");
console.time("async read 135KB file");
await read("./size_135kb.pdf");
console.timeEnd("async read 135KB file");
console.time("sync read 135KB file");
fs.readFileSync("./size_135kb.pdf");
console.timeEnd("sync read 135KB file")
} catch(err){
console.log(err);
}
})()
Удивительно, но результат был:
async read 65MB file: 148.487ms
sync read 65MB file: 25.268ms
async read 3MB file: 8.368ms
sync read 3MB file: 1.167ms
async read 135KB file: 0.499ms
sync read 135KB file: 0.081ms
Теперь, похоже, узел довольно производительный при чтении файлов синхронно, а не в своей асинхронной версии , (по крайней мере, в macOS, узел v10).
Есть ли какая-то причина, по которой следует предпочитать асинхронное чтение файлов в узле? Есть ли какие-либо плюсы и минусы в чтении файла в любом случае?