如何解决在 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 举报,一经查实,本站将立刻删除。