【问题标题】:Estimate the amount of time it takes to complete a programme in C#估计在 C# 中完成一个程序所需的时间
【发布时间】:2019-07-28 12:04:55
【问题描述】:

我正在使用秒表,我想估计从开始到结束需要多长时间。

它看起来像一个非常简单的复合体。我实例化了秒表,启动它,然后停止它,然后通过编写一个方法 .elapsed 它应该为我提供从启动到停止所需的时间。

不幸的是,它总是为我提供 00:00:00。

我必须在我的电脑上设置一些特定于我的文化的东西吗?

我也尝试过 .StartNew() 但无济于事。

        Stopwatch stopwatch = new Stopwatch();
        stopwatch.Start();

        string juniorDevOpsFolder = "JuniorDevOps";
        string targetPath = Directory.GetCurrentDirectory();
        int endIndex = targetPath.IndexOf(juniorDevOpsFolder);
        var juniorDevOpsPath = targetPath.Substring(0, endIndex + juniorDevOpsFolder.Length);
        string directory = "Files";
        string targetDirectory = Path.Combine(juniorDevOpsPath, directory);
        ProcessDirectory(targetDirectory);
        stopwatch.Stop();

        // Write hours, minutes and seconds.
        Console.WriteLine("Time elapsed: {0:hh\\:mm\\:ss}", stopwatch.Elapsed);

同样,输出是 00:00:00

【问题讨论】:

  • 什么是ProcessDirectory ??
  • 这看起来不像minimal reproducible example
  • 我调用了方法,但是这里不相关,重点关注秒表部分。
  • 您调用的方法非常相关,因为它似乎比1s快。你应该注意到的..!

标签: c# stopwatch


【解决方案1】:

您的程序执行时间不到一秒,因此格式化为stopwatch.Elapsed 正在将 00:00:00 打印到控制台。尝试stopwatch.ElapsedMilliseconds 而不是格式化的stopwatch.Elapsed

类似

    Stopwatch stopwatch = new Stopwatch();
    stopwatch.Start();

    //Your business logic

    stopwatch.Stop();
    Console.WriteLine($"Elapsed milliseconds : {stopwatch.ElapsedMilliseconds}" );

【讨论】:

    【解决方案2】:

    那段代码呢:

    var watch = new System.Diagnostics.Stopwatch();
    
            watch.Start();
    
            // do something what do you want
    
            watch.Stop();
    
            Console.WriteLine($"Execution Time: {watch.ElapsedMilliseconds} ms");
    

    【讨论】:

    • 谢谢,它确实是经过的毫秒数。
    【解决方案3】:

    这可能需要不到一秒钟的时间。尝试格式化毫秒。

    【讨论】:

    • 这应该是一条评论。您甚至不确定(“可能”),因此答案不是正确的选择。在 OP 说这是问题后,您可以将其变成答案。此外,为了成为答案,您还应该添加 how 来执行您的建议 - 显示代码或链接到某些文档页面。
    • 嗯,没有办法确定,因为我不知道 ProcessDirectory 是做什么的。但很可能问题在于它花费的时间不到一秒,因为大多数代码行花费的时间远远少于一秒。我建议了一个答案 - 以不同的方式格式化它,因为 OP 清楚地知道如何格式化 TimeSpan 对象。而且您不需要使用 ElapsedMilliseconds,就像其他答案会让您相信一样。正确的解决方案是格式化 Elapsed 以显示 ms 部分。
    • 可能但不确定。一条评论说“它可能不到一秒。尝试将其格式化为毫秒。LINK TO FORMATTING。”会很神奇。如果 OP 然后说这有助于您创建一个与评论内容相同的答案,并包含一个毫秒格式的字符串示例。不知道是不是我在这里太挑剔了,我只想提一下。
    【解决方案4】:

    也许只是因为您的程序执行时间少于不到一秒,这就是为什么您得到零小时、零分钟和零秒的原因?尝试未格式化的输出或ElapsesMilliseconds 属性

    【讨论】:

    • 这应该是一条评论。您甚至不确定(“也许”),所以答案不是正确的选择。在 OP 说这是问题后,您可以将其转换为答案。您提到了 ElapsesMilliseconds 属性,但在这种情况下尝试链接到文档 - 这总是很有帮助。同样对于 unformatted output 部分,显示一个示例 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多