下面是我可以创建的用于反转字符串的最快代码
public static void ReverseFast(string x)
{
string text = x;
StringBuilder reverse = new StringBuilder();
for (int i = text.Length - 1; i >= 0; i--)
{
reverse.Append(text[i]);
}
Console.WriteLine(reverse);
}
我想解决这个等式中的每一个瓶颈,以使其尽可能快。到目前为止,我唯一能找到的是我只部分理解的 Array Bounds 检查。如果您使用.Length
编译器决定不检查边界,但如果您在循环中递减,for
它仍然会进行边界检查,是否有禁用此功能?有人可以将其转换为使用指针来避免边界检查吗,我想测试 100k+ 个字符范围内的字符串的速度差异。
根据下面的评论和帖子,这是我迄今为止提出的。
public static void ReverseFast(string x)
{
StringBuilder reverse = new StringBuilder(x.Length);
for (int i = x.Length - 1; i >= 0; i--)
{
reverse.Append(x[i]);
}
Console.WriteLine(reverse);
}
上述解决方案比建议的重复问题答案要快得多。这个问题实际上是在解决 5000 * 26 个字符 + 范围内的反转问题。我仍然想使用指针来测试它,以真正查看是否没有瓶颈,尤其是对于如此大量的字符。