Асинхронное и синхронное чтение в сравнении узлов - PullRequest
0 голосов
/ 22 января 2020

Я делаю небольшое сравнение производительности при чтении файлов синхронно и асинхронно в узле. Итак, я написал небольшой скрипт,

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).

Есть ли какая-то причина, по которой следует предпочитать асинхронное чтение файлов в узле? Есть ли какие-либо плюсы и минусы в чтении файла в любом случае?

...