微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Promise.All 中调用匹配模板没有性能改进?

如何解决在 Promise.All 中调用匹配模板没有性能改进?

我正在为我的项目使用 OpenCV4NodeJS-prebuilt 以使用匹配模板。

我创建了两个文件一个是 Index.js,另一个是 matchTemplate.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 方法通过 gs4fb npm 包调用 ghostscript 并将 PDF 转换为图像,时间有所改善。

时间改进是指Promise.all方法一个一个调用函数所花费的总时间的差异。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。