C#基准测试:Process.TotalProcessorTime

时间:2015-05-31 10:09:08

标签: c# benchmarking kernel32

我试图测量C#中进程的执行时间。这是我用来执行此操作的代码:

    private static double TimeProcess(string name, string workingDirectory, string arguments)
    {
        Process process = new Process();
        process.StartInfo.WorkingDirectory = workingDirectory;
        process.StartInfo.FileName = name;
        process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.Arguments = arguments;

        process.Start();
        process.WaitForExit();

        return process.TotalProcessorTime.TotalMilliseconds;
    }

我知道通常的基准测试方法是实例化秒表并使用它来测量经过的时间,但是,我想知道在这种情况下秒表是否合适,因为它会受到影响例如安排。我的方法可以保证只测量流程执行的时间。

我的两个问题:

  1. 假设秒表在这种情况下不太准确/劣质选择,我错了吗?
  2. Process.TotalProcessorTime的精确程度如何?我可以看到它调用了kernel32方法" GetProcessTimes"但是我很难找到有关此方法实际工作方式的信息。同时,有很多关于" QueryPerformanceCounter"秒表使用的方法。

0 个答案:

没有答案