特别是记忆化会使性能下降吗?性能增加是否是线性的?
我有一个函数需要调用一些复杂的数学函数200,000,000次。如果不使用记忆化(保存值/缓存),需要1分钟才能完成。如果我保存这些值-大约有5,000,000个唯一条目-它仍然需要30秒。这些值是双倍精度,我正在使用自己的哈希函数,哈希表大小约为20,000,000(为了使计算哈希值变得更容易)。
但是,复杂的数学函数仍然只运行了5,000,000次(我甚至使用计数器检查过)。为什么它没有以大约5,000,000/200,000,000的速度运行?
在此之前,我没有使用任何大型数据结构,现在我使用了一个大小为20,000,000的双数组来进行澄清。我不知道这是否会有所不同。
我有一个函数需要调用一些复杂的数学函数200,000,000次。如果不使用记忆化(保存值/缓存),需要1分钟才能完成。如果我保存这些值-大约有5,000,000个唯一条目-它仍然需要30秒。这些值是双倍精度,我正在使用自己的哈希函数,哈希表大小约为20,000,000(为了使计算哈希值变得更容易)。
但是,复杂的数学函数仍然只运行了5,000,000次(我甚至使用计数器检查过)。为什么它没有以大约5,000,000/200,000,000的速度运行?
在此之前,我没有使用任何大型数据结构,现在我使用了一个大小为20,000,000的双数组来进行澄清。我不知道这是否会有所不同。