我的问题主要与性能相关,我在主ElectronJS进程上运行了以下代码:
ipcMain.handle('add_product', async (event, args)=>{
return new Promise((resolve, reject)=>{
try {
if(Array.isArray(args)){
args.forEach(prod =>{
const {name,barcode,stock,price,buy_price,image,alert} = prod
const stmt = db.prepare("INSERT INTO products VALUES (?,?,?,?,?,?,?)")
stmt.run(name, barcode, stock, alert, price, buy_price, image)
stmt.finalize()
})
resolve({text : `${args.length} product have been added to database!`})
}else{
// This code execute's only when adding a single product
// It is not relevant to the question
const {name,barcode,stock,price,buy_price,image,alert} = args
const stmt = db.prepare("INSERT INTO products VALUES (?,?,?,?,?,?,?)")
stmt.run(name, barcode, stock, alert, price, buy_price, image)
stmt.finalize()
resolve({text : `Product '${name}' have been saved!`})
}
}catch (error){
reject(error)
}
})
})
它接收一个对象数组,每个对象包含一个产品详细信息。现在,上面的代码可以工作了,并成功地将行插入到数据库中。但是,当使用大量数据样本(超过5000个产品)测试它时,整个应用程序在将行保存到数据库中时冻结了几秒钟,然后才重新响应。
开发堆栈为:
- 电子JS
- ReactJS(将其用于VIEW)
- SQLite数据库
什么是使应用程序运行得更胖的最佳性能驱动方式?
1条答案
按热度按时间cvxl0en21#
好吧,我用公式表示查询的方式是它将运行5000次--每个产品一次--这大大降低了整个应用程序的速度。
我将代码更改为:
现在,查询只运行一次(以异步方式运行,以避免阻塞UI),但可以运行所有产品,而且速度快得多。