【发布时间】:2016-08-11 22:52:25
【问题描述】:
所以我编写了一个快速程序来测试在 foreach 语句中检查布尔值与在循环外的条件语句中检查布尔值会产生多大的差异(在处理速度方面)。为了测试这一点,我让一个函数生成随机字符串并将它们添加到一个列表中,但是生成字符串的 for 循环似乎推进得太快而没有在重复中生成不同的字符串。为了解决这个问题,我添加了一个Thread.Sleep(15)(15 毫秒似乎是在每次重复中生成不同字符串所需的最小值)。
我的问题是:没有Thread.Sleep(15) 是否可以解决此问题?在每次重复之间等待 15 毫秒,这样程序就会花费更多的时间来运行,这使得它的目的非常不切实际(如果我想获得统计相关的数据,我必须运行它大约 10000 次对于每个选项(“好”和“坏”方式))。这是有问题的 for 循环:
for (int i = 0; i < 1000; i++) {
var stringChars = new char[8];
var random = new Random();
for (int n = 0; n < stringChars.Length; n++)
{
stringChars[n] = chars[random.Next(chars.Length)];
}
var finalString = new String(stringChars);
data.Add(finalString);
Thread.Sleep(15);
}
【问题讨论】:
-
您应该在
for循环之外创建Random()。 -
谢谢!完美运行。我会尽快接受答案。