多個唯一的字符串我的項目,我必須生成唯一字符串列表。 一切工作正常,但我的問題是,它在最後是非常緩慢。 我已經使用並行循環試過,但我發現我ConcurrentBag<T>
,我用它,也慢。 現在我使用一個簡單的for循環和List<T>
,現在快一點點的,也很慢。生成C#
這裏是我的代碼:
private List<string> Generate(int start, int end, bool allowDupes)
{
var list = new List<string>();
var generator = new StringGenerator(LowerCase, UpperCase, Digits, NumberOfCharacters);
for (var i = start; i < end; i++)
{
StringBuilder sb;
while (true)
{
sb = new StringBuilder();
for (var j = 0; j < NumberOfSegments; j++)
{
sb.Append(generator.GenerateRandomString());
if (j < NumberOfSegments - 1)
{
sb.Append(Delimiter);
}
}
if (!allowDupes)
{
if (list.Contains(sb.ToString()))
{
continue;
}
}
break;
}
list.Add(sb.ToString());
GeneratedStringCount = i + 1;
}
return new List<string>(list);
}
我也跟我的老師,他會使用相同的算法生成這些字符串。 你知道更好的解決方案嗎? (在StringGenerator
的GenerateRandomString()
方法簡單,不消耗過多的表現。list.Contains(xy)
是消耗資源的很多。[在Visual Studio性能分析])
什麼開始和結束點?它看起來像你想要多少簡單的計數。爲什麼'返回新的List(list)'而不是'return list'? – Jonesopolis
這些字符串的內容有什麼限制? –
嘗試使用HashSet而不是列表如果需要大量字符串,這應該會提高性能 –