c++ - 比较代码算法/片段的最正确(最好)的方法是什么?

标签 c++ algorithm time

我编写了一个 C++ 代码来计算太阳辐射的反射(基于光线追踪原理)。 我已经包含了一些加速技术。 在我的文章中,我必须证明这些算法的合理性。我本来打算纯粹根据时间基准来做这件事,但 @weberc2 HERE 的评论让人相信这不是最好的解决方案。

我看过代码分析软件,如 Very sleepyAMD Code Analyst这有助于识别瓶颈等。

由于主管可能缺乏编程知识,基于时间的分析似乎是最合乎逻辑的......

例如 “使用 Grid 事件运行相同的场景,计算精度提高了 20%,而时间损失仅为 2 秒......”

这是一个单线程程序。 利用时间真的那么危险吗? 有什么建议。 谢谢大家

最佳答案

我不同意。比较时间是完全可以的 - 但有一个限制。

单次运行没有说明任何问题。这就是为什么我们有 statistical tools 并进行测试以显示A 与 B 不同

在多个测试用例和各种条件下运行一系列测试。将数据(运行时间)存储在两个不同的列表中,然后运行统计测试以显示其中一个优于另一个

统计测试的“答案”是 P-Value 。 P 值表示“你错误的概率是多少”。例如,如果您有一组测试,并且运行统计测试并发现 P_Value = 0.01。这意味着有 99% 的概率 - 两个样本是不同的,您可以得出结论,平均值较低的样本更好。

统计测试的事实标准(至少在我的领域)是 Wilcoxon Paired Signed Test


附注统计测试将“证明”对其测试条件的假设,例如 - 如果您在 AMD CPU 上运行它,它不会说明在 Intel CPU 上会发生什么(也许指令集使“更糟”明显更好在其中)。

但是,请注意,尽管如此,它还是很容易被接受并广泛应用于人工智能和信息检索等领域的文章中。

关于c++ - 比较代码算法/片段的最正确(最好)的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13290638/

相关文章:

c++ - 为什么我在计算 Pascal 三角形的元素时在递归 C 程序中出现堆栈溢出错误?

python - 将日期时间转换为小时数?

C++(11) : When to use direct or copy initialization if both are perfectly fine

c++ - VC6和模板错误

c++ - 在插入之前使用 lower_bound 搜索 map 的好处。等同于 ptr_map?

c++ - 为什么结构体的 sizeof 不等于每个成员的 sizeof 之和?

algorithm - 图像失真算法的错误行为

java - HMACSHA256 输出字节/位

time - 根据时间改变背景 - Objective C

时间格式化和从字符串转换