让我们以这个示例场景为例:
存在一个非常复杂的函数,它涉及数学平方根和立方根(处理速度较慢)来计算其输出。例如,让我们假设函数接受两个参数a和b并且值 a 和 b 的输入范围都是明确定义的。让我们假设输入值a和b的范围是 0 到 100。
因此,本质上fn(a,b)可以实时计算,也可以将其结果预填充到数据库中,并在需要时获取。
方法一:实时计算
function fn(a,b){
result = compute_using_cuberoots(a,b)
return result
}
方法二:从数据库中获取函数结果
我们有一个预先填充了映射到相应结果的输入值的数据库:
a | b | result
0 | 0 | 12.4
1 | 0 | 14.8
2 | 0 | 18.6
. | . | .
. | . | .
100 | 100 | 1230.1
我们可以
function fn(a,b){
result = fetch_from_db(a,b)
return result
}
我的问题:
你会提倡哪种方法,为什么?为什么你认为一种方法比另一种更有效?
我相信这是我们大多数人在编程生活中的某个时候会面临的一个场景,因此也是这个问题。
谢谢你。
问题背景(可能不相关)
示例:在像图像处理这样的场景中,可能会更频繁地遇到这种情况,其中输入 (R,G,B) 的值范围是已知的 (0-255) 并且平方根的数学计算和立方体根为完成服务器请求引入了太多时间。
让我们举个例子,你正在构建一个像 Instagram 这样的应用程序 - 处理用户发送到服务器的图像所花费的时间和返回处理后的图像所花费的时间必须保持最小,以获得最佳的用户体验。在这种情况下,重要的是尽量减少处理图像所花费的时间。更糟糕的是,当此类处理请求的数量变得很大时,就会引入可伸缩性问题。
因此,有必要在上述方法之一之间进行选择,这也是在这种情况下的最佳方法。
有关我的情况的更多详细信息(如果需要):
框架: Ruby on Rails,数据库: MongodB