C++ std::map的最佳大小

C++ std::map的最佳大小,c++,stdmap,pow,C++,Stdmap,Pow,我使用的是std::map键是2个双精度对,值是一个双精度值 我用它来缓存功率值 我的问题是在多大的地图(缓存)上,我可以说像搜索/插入比计算功率需要更多的时间,我应该清除它。我认为这个问题没有答案。map的性能几乎不取决于您如何使用它,在哪个平台上运行代码,等等。。为了使映射尽可能快地运行,您无法绕过代码的基准点。无论其中包含多少元素,您的映射都无法按预期工作。使用doubles作为键可能并将导致问题,具体取决于情况。如果您的代码使用相同的参数调用相同的函数100次,那么我将首先尝试修复该代码

我使用的是
std::map
键是2个双精度对,值是一个双精度值

我用它来缓存功率值


我的问题是在多大的地图(缓存)上,我可以说像搜索/插入比计算功率需要更多的时间,我应该清除它。

我认为这个问题没有答案。map的性能几乎不取决于您如何使用它,在哪个平台上运行代码,等等。。为了使映射尽可能快地运行,您无法绕过代码的基准点。无论其中包含多少元素,您的映射都无法按预期工作。使用
double
s作为键可能并将导致问题,具体取决于情况。如果您的代码使用相同的参数调用相同的函数100次,那么我将首先尝试修复该代码,而不是函数。回忆录也有成本。不反复调用相同参数的函数是免费的。你能发布一个吗?@HimanshuSaxena你的问题很难回答,因为答案取决于太多的因素,比如:输入分布、代码运行的平台等等。根据平台的不同,如果是现代平台,pow不是一个函数,而是一个内在的别名,即CPU指令执行该计算。有可能的优化可以减少调用量、缓存中间值、使用流式指令、在精度允许的情况下用等效的pow替换pow,但这需要更改代码结构。map中的搜索速度绝对较慢,获得的局部性比内在调用少,添加新值更重要。确保你用的是而不是我认为这个问题没有答案。map的性能几乎不取决于您如何使用它,在哪个平台上运行代码,等等。。为了使映射尽可能快地运行,您无法绕过代码的基准点。无论其中包含多少元素,您的映射都无法按预期工作。使用
double
s作为键可能并将导致问题,具体取决于情况。如果您的代码使用相同的参数调用相同的函数100次,那么我将首先尝试修复该代码,而不是函数。回忆录也有成本。不反复调用相同参数的函数是免费的。你能发布一个吗?@HimanshuSaxena你的问题很难回答,因为答案取决于太多的因素,比如:输入分布、代码运行的平台等等。根据平台的不同,如果是现代平台,pow不是一个函数,而是一个内在的别名,即CPU指令执行该计算。有可能的优化可以减少调用量、缓存中间值、使用流式指令、在精度允许的情况下用等效的pow替换pow,但这需要更改代码结构。map中的搜索速度绝对较慢,获得的局部性比内在调用少,添加新值更重要。确保您使用而不是