我正在编写一些代码的性能基准测试。这是为了比较我自己的实现,因为我开发/实验,并与#34;竞争"进行比较。实现。我写这些并没有问题,并获得可用的结果。
非常确定的是,更多样本是一件好事,因为它可以减少错误数据的影响,并提供更真实的结果。
所以,如果我正在分析给定的函数/过程/什么,那么看起来合理的样本数量是多少?
我目前每次测试都要做大约100万个样本。这些都是单独的操作,即使在旧笔记本电脑上,每件物品的结果也很少超过10秒。大多数都不到百分之一秒。
答案 0 :(得分:0)
实际上,尚未确定更多样品是好事。 这只不过是普通的智慧。
我认为你分享的是关于分析原因的一般混淆,无论目的是衡量绩效还是找到加速。
为了测量性能,您根本不需要样品。 你需要的是一个秒表,无论是否在软件中。 如果您的过程运行得太快而无法分辨秒表,只需运行您的过程10 ^ 3或10 ^ 6次,测量它,然后除以该数字。
为了找到加速,如果样本包含行级或指令级调用站点信息,则对调用栈进行采样非常有效。 你需要多少个样品? 好吧,如果你看到它做了一些可以在一个样本上删除的东西,那可能并不意味着什么。 但是如果你在两个样本上看到它,估计它的成本时间分数F约为2 / N,其中N是样本数。 示例:如果您在10个样本中看到它两次,则意味着它花费大约20%的时间。 一般来说,如果加速将节省你的时间分数F,它需要平均2 / F样本才能看到它两次。 示例:如果它将节省30%的时间(F = 0.3),您需要平均2 / 0.3 = 6.67个样本才能看到它两次。 当然,如果你看到它超过两次,那就更好了。
底线,为了找到加速,你不需要大量的样本。 您需要的是检查每个以查找可以删除的活动。 你不需要的就是将它们拼凑成“统计数据”(就像大多数分析者一样)。 Many people understand this.
如果您想要更严格的解释,look here。