我编写了一个C++代码来计算太阳辐射的反射(基于射线追踪原理)。我已经包括了一些加速技术。在我写的文章中,我必须证明这些算法是正确的。我打算完全从时间基础上来做,但是@weberc2 2 这里的评论让人相信这不是最好的解决方案。
我看过像很困和AMD代码分析员这样的代码分析软件,它们有助于识别瓶颈等。
由于主管可能有很差的编程知识,基于时间的分析似乎是最符合逻辑的。
例如:“运行与Grid活动相同的场景,只需2秒的时间,计算精度就提高了20%……”
它是一个单线程程序。利用时间真的那么危险吗?任何建议。谢谢大家
发布于 2012-11-08 14:21:23
我不同意。比较时间是很好的--但也有一定的局限性。
一次跑就什么都没有了。这就是为什么我们有统计工具和测试来显示A is distinct then B。
在多个测试用例和各种条件下运行一系列测试。将数据(运行时间)存储在两个不同的列表中,然后运行一个统计测试,以表明一个比另一个更好。
统计测试的“答案”是一个P值。P值表示“你错的概率有多大”。例如,如果您有一组测试,然后运行一个统计测试并找到P_Value = 0.01。这意味着概率99% -这两个样本是不同的,你可以得出一个较低的平均值是更好的。
统计测试的事实上的标准(至少在我的领域)是Wilcoxon配对签名检验。
例如,统计测试将“证明”测试条件的假设--如果你在AMD CPU上运行它,它就不会说明英特尔CPU上会发生什么(也许指令集会使它的“更糟”变得更好)。
然而,请注意,尽管如此,它是非常可接受和广泛应用在文章领域,如人工智能和信息检索。
发布于 2012-11-08 15:37:20
“新版本是否在使用p=0.99的旧版本的50%时间内运行”对主管来说意味着什么,这将取决于主管对算法对业务的重要性的了解。在许多情况下,对一个函数的度量进行统计分析是程序员改进它的一个非常有用的工具,但对管理来说却毫无意义。
据推测,这段代码正在被优化,因为对业务有重要意义的东西会通过使其更快而得到改进。通常,这就是在向主管报告结果时应该讨论的内容:“由于这种变化,事务X的典型情况将在平均6秒而不是10秒内完成”,“使用此版本,我们可以在一个工作日而不是只有一个工作日运行两次工程模拟”。
如果考虑到主管关心的业务目标,那么在优化过程中要完成的特定类型的时间测量(挂钟或总CPU或用户CPU或内存占用)通常是显而易见的。
https://stackoverflow.com/questions/13290638
复制相似问题