Вызов шаблона сопоставления в Promise.All Нет улучшения производительности?

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

Я создал два файла, один из которых Index.js, а другой — matchTemlate.js.

В Index.js я вызываю шаблон соответствия:

const { matchTemplate } = require("./matchTemplate");
...

let a = async function () {

  let tm = performance.now();
  try {
    await Promise.all([
      matchTemplate(baseImage, templateR),
      matchTemplate(baseImage, templateL)
    ]).then(result => {
      const c = result.map((ob) => (ob.C)) // confidence
      top = c[0] > c[1] ? result[0].Y + 8 : result[1].Y + 11
    })
  } catch (error) {
    console.log(error)
  }
  tm = performance.now() - tm;

  console.log(tm)
} 

и это matchTemplate.js

const cv = require('opencv4nodejs-prebuilt')

exports.matchTemplate = async function (inputFile, templateImage) {
    // eslint-disable-next-line no-unused-expressions
    const matS = await cv.imdecodeAsync(templateImage)

    console.time('templateMatching')
    const matched = inputFile.matchTemplate(matS, 3)
    console.timeEnd('templateMatching')

    const minMax = matched.minMaxLoc()
    return ({ Y: minMax.maxLoc.y, C: minMax.maxVal })
}
 

Вывод журнала matchTemplate: templateMatching: 892.648ms templateMatching: 890.387ms

и вывод журнала index.js: TemplateMatching: 1824.8019220000133

Почему нет улучшения скорости? в то время как выполнение выполняется параллельно, почему оно по-прежнему занимает время, равное времени, затрачиваемому обоими?

Я попробовал метод Promise.all для вызова ghostscript через пакет gs4fb npm и преобразования PDF в изображение, и время улучшилось.

Под улучшением времени я подразумеваю разницу общего времени, затрачиваемого методом Promise.all и вызовом функций по очереди.


person ChandraShekharAazad    schedule 26.05.2021    source источник
comment
хотя выполнение выполняется параллельно, оно не выполняется параллельно. Асинхронность не означает многопоточность — код по-прежнему выполняется в одном потоке.   -  person VLAZ    schedule 26.05.2021
comment
(Не имеет прямого отношения к вопросу) Разве у нас не должно быть какого-то канонического об асинхронном! = параллельном? Это проявляется часто, и я знаю, что видел это объяснение снова и снова. Но есть ли хороший канонический текст, на который можно просто сослаться?   -  person VLAZ    schedule 26.05.2021
comment
inputFile.matchTemplate не выглядит асинхронным, так как вы этого не await делаете.   -  person Bergi    schedule 26.05.2021