我创建了一个C#控制台应用程序,它不断创建带有随机创建字符串的文本文件。时间(分钟)作为应用程序的输入给出,并运行该分钟数以生成连续的文本文件。据我所知,生成的数据量将根据处理器速度和其他配置而有所不同。我的机器能够在1分钟内以文本格式生成总共25 MB的数据。
现在,我的问题是,如果通过我的代码作为应用程序的另一个输入提供,我可以控制每分钟生成的数据速率吗?
非常感谢任何帮助。
答案 0 :(得分:2)
如果你只能在一分钟内生成25MB,并且它只是随机字符串,那么你还有其他需要考虑的事情 - 你应该能够轻松地完成比一分钟更多的数量级。
但就控制而言,只有我能想到的方法是手动保持计时器运行,并记录你写了多少时间,以便在你去的时候自动计算你的费率 - 一旦你计算了你的速度,你需要多快的速度,然后根据需要适当地睡觉。
它不会是完美的,但你应该能够做出最好的猜测,并根据过去的表现不断调整你的睡眠时间。
答案 1 :(得分: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);
}
答案 2 :(得分:0)
是。你可以做两件事之一;如果要控制数据的mb,则让用户传入一个int,用于控制写入文件的字符串的长度。另一种选择是使用睡眠。您可以让用户传入睡眠值,然后您可以在每次写入之间休眠一段时间。
答案 3 :(得分:0)
您可以设置计时器并每隔N秒创建一个文件。