随机化大量字符串的最快方法

时间:2011-07-23 00:53:35

标签: c# optimization random

我想声明(并随机化)大约500个字符串。

我相信我有两个选择:

1:创建一个大小为500的数组。

string[] x = new string[500];

for(int i = 0; i < 500; i++)
{
    x[i] = Randomize_thisString(); // Some routine 
}

2:声明(并随机化)500个不同的字符串。

string string_one = Randomize_thisString();
string string_two = Randomize_thisString();
string string_n = Randomize_thisString(); 

...

其中哪一个是更快的方法,并且有人知道第三个选项吗?

谢谢,

埃文

3 个答案:

答案 0 :(得分:2)

我将选择第一选择,因为这只会运行一次而且不需要太多时间。
关于如何创建函数来生成随机字符串的想法我将使用System.IO.Path.GetRandomeFileName() 测试代码:

System.IO.Path.GetRandomFileName();

Stopwatch watch = Stopwatch.StartNew();
string[] x = new string[500];

for (int i = 0; i < 500; i++)
{
    x[i] = System.IO.Path.GetRandomFileName();
}

watch.Stop();
Console.WriteLine(watch.ElapsedMilliseconds);

结果是2。

答案 1 :(得分:0)

只是一个想法。不确定你是否需要预先提供所有500个字符串。

如果您在循环中使用它来执行某些操作,则可以使用yield仅在需要时创建字符串。

 public IEnumerable<string> GetRandomString()
    {
      for(int i=0; i<500; i++)
       yield return RandomizeString();
    }

答案 2 :(得分:0)

你是什么意思

  

声明(并随机化)500个不同的字符串。

string a1 = GenerateRandomString();
string a2 = GenerateRandomString();
string a3 = GenerateRandomString();
.
.
.
.
string a500 = GenerateRandomString();

如果是这样,你可以修改this课程

顺便说一下,在两种情况下,程序是逐行执行的,生成字符串所需的时间不应有差异