gpt4 book ai didi

mysql - 在应用程序启动期间将 MySQL 结果存储在一个对象中是否更有效?

转载 作者:行者123 更新时间:2023-11-30 21:30:11 24 4
gpt4 key购买 nike

当我启动我的 Node 应用程序时,我会存储“静态”MySQL 数据,例如游戏任务和游戏怪物,这些数据不会在全局对象中修改。我不确定以这种方式执行此操作或在每次需要时检索数据是否更有效。示例代码:

global.monsters;

doConn.query('SELECT * FROM monsters', function(error, results) {
if (error) {
throw error;
}
console.log('[MYSQL] Loaded monsters');
monsters = results;
});

最佳答案

代码效率有一个重要的概念叫做loop-invariant .它指的是在循环的每次迭代中保持不变的任何事物。

例子:

for loop := range 1..100 {
m = 42
// other statements...
}

m 被赋值 100 次。为什么要做100次?为什么不在循环之前或之后分配一次,并节省 99% 的工作?

m = 42
for loop := range 1..100 {
// other statements...
}

某些类型的编译器可以在编译步骤中分解出这段代码。但也许不是 Node.js。即使它可以分解出来,如果您在循环外使用循环不变语句来编写代码,读者也会更加清楚。否则,读者会浪费他们的一些注意力来弄清楚语句是否在循环内是有原因的。

m = 42 的示例非常简单,但可以有更复杂的代码,它们仍然是循环不变的。就像从数据库中查询数据一样,您提出的问题。

每条规则都有异常(exception)。例如,一些关于怪物的数据可能会经常变化,即使在玩家玩游戏时也是如此,因此您的游戏可能需要反复查询以确保始终拥有最新数据。

但一般来说,如果您可以识别出与在程序开始时查询一次一样正确的查询,那么这样做比重复查询要好。

关于mysql - 在应用程序启动期间将 MySQL 结果存储在一个对象中是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com