【问题标题】:how to compare two c# program in windows 7 in case of running time [closed]如何在运行时间的情况下比较 Windows 7 中的两个 c# 程序[关闭]
【发布时间】:2013-09-29 19:18:31
【问题描述】:

我在windows 7 上用VS2010 编写了两个带有c# 语言的程序。

我想根据运行时间来比较它们,换句话说,我想知道哪个更快。

不幸的是,它们的运行时间以毫秒为单位。问题是,当我单独运行它们时,一旦我看到它们中的一个更快,但接下来当我再次重复运行它们时,我看到另一个结果,我的意思是更快的一个变为更慢的一个。

windows中有什么东西可以带来两个完全相等的环境来比较时间吗?

他们两个的输入文件是相同的,当我使用更大的输入文件时,时间早于几秒钟,但即使问题仍然存在

【问题讨论】:

  • 你的问题很难理解,你能解释一下你想要做什么吗?此外,如果运行时间如此接近,您需要一个特殊的环境来测试它,您使用哪个真的很重要吗?
  • 是的,先生,我是为大学研究项目做的。正如您想知道的主题是数据包分类。我们增强了先前的算法。通过我们实现新结构的方式,我们现在只想知道哪个更快。对不起,你是大师,根据你的堆栈溢出分数,你比我有更多的知识
  • @alex 我的解析器在“我写了两个程序”后崩溃了

标签: c# windows visual-studio-2010


【解决方案1】:

任何“测量速度太快”的分析问题都可以通过重复执行来解决。在一个循环中运行您的测试代码,执行一千或一百万次。如果您正在测量单个 cpu 指令,则为十亿。

意味着当您只执行一次测量时,您的测量就代表了它的运行方式。现代机器在做他们以前从未做过的工作方面非常糟糕,缓存为王。但是您将获得代码的摊销执行时间的测量值。当您的代码需要处理真实数据集时,真正很重要。

【讨论】:

    【解决方案2】:

    确保您的环境每次都完全相同的唯一方法是创建测试环境的映像并将其作为虚拟机运行。然后,您可以使用每个新测试重新加载系统。

    但是可以以毫秒为单位来衡量运行时间,您只需要使用 Stopwatch 类。

    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    // run your test here...
    stopWatch.Stop();
    
    TimeSpan ts = stopWatch.Elapsed;
    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
    Console.WriteLine("RunTime " + elapsedTime);
    

    或者,您可以多次运行测试,每次都运行一次,任何轻微的差异都会被平均化。

    【讨论】:

    • 这段代码是我写的!!!但我有问题
    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多