1

我创建了一个 C# 控制台应用程序,它使用随机创建的字符串连续创建文本文件。时间(以分钟为单位)作为应用程序的输入,它运行该分钟数以生成连续的文本文件。我了解生成的数据量会因处理器速度和其他配置而异。我的机器能够在 1 分钟内生成总共 25 mb 的文本格式数据。

现在,我的问题是,如果通过我的代码作为应用程序的另一个输入,我可以控制每分钟生成的数据速率吗?

任何帮助将不胜感激。

4

4 回答 4

2

如果你在一分钟内只能生成 25MB,而且它只是随机字符串,那么你还有其他事情要考虑——你应该很容易在一分钟内完成比这更多的数量级。

但就控制而言,我能想到的唯一方法是手动保持计时器运行,并跟踪你在多少时间内写了多少,在你前进的时候自动计算你的速度——然后睡觉一旦您计算出您的行驶速度与您想要行驶的速度,必要时适当地进行。

它不会是完美的,但你应该能够做出最好的猜测,并根据过去的表现不断调整你的睡眠时间。

于 2012-10-26T21:54:29.353 回答
1
var start = DateTime.Now;
int bytesSaved=0;
double desiredSpeed = (25*1024*1024)/60;

while(true)
{
  int latency = bytesSaved/(DateTime.Now-start).TotalSeconds - desiredSpeed;
  if(latency>0) 
    {          
      Thread.Sleep(100);
      continue;
    }

  bytesSaved +=SaveDataChunk(latency);     

}
于 2012-10-26T22:08:34.527 回答
0

是的。你可以做两件事之一;如果您想控制数据的 mb,则让用户传入一个 int,您可以使用它来控制写入文件的字符串的长度。另一种选择是使用睡眠。您可以让用户传入一个睡眠值,然后您可以在每次写入之间睡眠这段时间。

于 2012-10-26T21:52:05.957 回答
0

您可以设置一个计时器并每 N 秒创建一个文件。

于 2012-10-26T21:58:12.537 回答