如何将理论效率与实践示例进行比较[关闭]

Posted

技术标签:

【中文标题】如何将理论效率与实践示例进行比较[关闭]【英文标题】:How to compare theoretic efficiency with practice examples [closed] 【发布时间】:2018-04-05 13:22:49 【问题描述】:

我已经编写了一个 C++ 代码来解决一个特定的问题,并且我研究过效率(理论效率,大 O)。

我有兴趣将我计算出的效率与一些实际示例进行比较,测试我的算法,以查看我是否正确地进行了计算。

有什么办法吗?我应该得到执行时间吗?那么,我如何将它与我计算的那个 big-O 进行比较?

谢谢。

【问题讨论】:

提示:当 n 加倍时,您期望与 O(n) 的算法的执行时间有什么区别? 您可能会发现这很有用:quick-bench.com。或者您可以编写自己的基准测试软件。 双倍?我不知道。它还取决于输入数据(至少在这个算法中) @UnholySheep 我根本没想到它会翻倍。那里可能有一个不会改变的常数:P @Yola 考虑k * n + m,其中k 是一个小常数,m 是一个大常数。这是 O(n),但对于足够小的 n,将 n 加倍时的差异可以忽略不计。 【参考方案1】:

您应该使用不同大小的输入数据运行您的实现,并测量在这些大小上运行所需的时间。

假设您选择了大小 100、200、1000。假设您针对每个输入大小运行多次并计算平均值 - T100、T200、T1000。现在计算 T200/T100 并检查您的理论复杂度。它是否以相同的速度增长?例如。如果理论复杂度为 O(n),那么时间应该几乎翻倍。

【讨论】:

【参考方案2】:

Google Benchmark can calculate asymptotic complexity(即 Big-O)为您服务。还有this Web 服务可以帮助您使用这个框架快速对代码进行基准测试。但是您显然应该考虑从后者请求多少计算。

【讨论】:

以上是关于如何将理论效率与实践示例进行比较[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将来自用户的输入图像与 C# 中数据库中存储的图像进行比较 [关闭]

Naive Bayes理论与实践

您如何将基于 Scala 的 Web 服务器与其他 Web 框架进行比较? [关闭]

如何将一个单词与所选单词列表进行比较,以找到最相关的单词? [关闭]

NLP基础|中英文词向量评测理论与实践

如何检查密码强度? [关闭]