我编写了一个小程序来使用朴素除法算法计算素数。为了提高性能,我认为它应该只检查基于先前检测到的小于等于数字平方根的素数的整除性。
为此,我需要跟踪素数。我已经使用动态数组实现了它。 (例如,使用 new
和 delete
)。我应该改用 std::vector
吗?哪个在性能方面更好? (维护不是问题。)
任何帮助,将不胜感激。 😊
最佳答案
理想的答案:
我们怎么知道?这取决于您的编译器、您的操作系统、您的体系结构、您的标准库实现、行星的排列...
对其进行基准测试。可能与 this . (没用过,不过用起来好像很简单)
实际答案:
使用std::vector
。您所做的每一次 new
和 delete
都是内存泄漏、两次 delete
或忘记做某事的机会。 std::vector
基本上是在幕后完成的。通过最大化优化标志,您更有可能获得相当大的性能提升(如果您使用的是 gcc
,请尝试 -Ofast
和 -march=native
)。
还有:
Maintenance is not an issue.
怀疑。相信我这一点。如果不出意外,至少要注释您的代码(但那是另一种蠕虫病毒)。
关于c++ - 动态数组与 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33320623/