5

我们的商业模式要求根据 CPU 小时数/使用情况向用户收费。

最初我在考虑简单地使用StopWatch然后使用经过时间作为度量单位。

但是我看到这种方法的问题是,在白天有 5000 个用户访问服务器时,同一段代码的运行时间会比夜间只有 50 个用户访问服务器的时间要长。

另一种选择是根据对传入的数据用户执行的迭代向用户收费。这种方法也存在一些问题。

  • 有些函数不需要对数据进行任何迭代。
  • CPU 使用率x + y低于x + y * z.

什么是在 C#/.Net 中计算 CPU 使用率信息的好方法,以便无论服务器的负载如何,对于相同操作的所有用户都保持相同?

可能,实际装配级指令的总量?有没有办法在 C# 中获取这些信息?

有什么其他的方法,可以分享推荐吗?

非常感谢您对此进行调查。

4

1 回答 1

14

执行用户想要在单独进程中运行的任何内容,并在进程完成后查找其CPU 时间。这也与挂钟时间不同,因为它只考虑进程在 CPU 上实际运行的时间。

对于那些不愿意阅读文档的人来说,最小的例子:

ProcessStartInfo psi = new ProcessStartInfo(@"C:\Blah\Foo.exe");
Process p = Process.Start(psi);
p.WaitForExit();
TimeSpan time = p.TotalProcessorTime;
p.Close();

不过,您可能希望异步运行它。

无需估计、猜测或黑魔法。无论如何,您无法可靠地计算它。

于 2012-06-10T15:27:54.873 回答