2009-11-30 120 views
0

我有一个关于基准测试字符串匹配算法的项目,我想知道是否每个算法都有一个标准,这样我就可以用我的实验获得公平的结果。我打算使用java的system.nanotime来获取每个算法的运行时间。非常感谢对我的问题的任何评论或反应。谢谢!字符串搜索算法

+0

你是什么意思:“每个算法的标准”?如果你的项目需要你创建一个基准,那么这不是你应该设计的吗?我错过了什么吗? – dirkgently 2009-11-30 18:21:26

+0

这是否意味着我可以创建我自己的算法版本?或者我是否需要遵循像NSIT这样的标准管理机构的伪代码? – Shamko 2009-11-30 18:31:50

+0

基准测试通常是一组输入,您可以使用该测试来测量一组(主要是正交)参数的值。通常情况下,您会针对标准实施运行基准测试,以了解您的工作情况。 – dirkgently 2009-11-30 18:47:24

回答

1

我不完全确定你在问什么。不过,我猜你正在问如何得到最现实的结果。你需要运行你的算法数百次,甚至数千次迭代才能获得平均值。关闭你的语言可能做的任何缓存也是非常重要的,并且不要重用对象,除非它是你的算法的一部分。

+0

谢谢您的提示先生。 :) – Shamko 2009-11-30 18:34:04

1

我不完全确定你在问什么。然而,对于你所问的问题的另一种解释可以通过试图找出给定算法如何增加问题的大小来解决。使用原始时间比较给定字符串大小的算法不一定能够进行准确的比较。相反,您可以尝试使用不同字符串大小的每种算法,并查看算法在字符串大小变化时的行为。

马克的建议也不错。因此,您正在对许多不同的字符串长度进行重复试验,以获得一个算法如何工作的图片,然后针对下一个算法重复该操作。

1

再次,目前还不清楚你问什么,但这里除了又一想什么托尼和马克说:

要非常小心,只测试“真实”输入或只是“随机”的输入。一些算法被调整为在典型输入(在英文文本中搜索单词)上做得很好,而另一些算法则被调整用于在病态严重病例中良好工作。您需要各种不同类型和大小的可能输入的大量组合才能做出真正的好的基准。

+2

在我做完5分钟后,你是如何回答2周的问题的? – 2009-12-14 07:59:51