循环遍历char []或substring():C#中的效率?

Der*_*unk 2 c# performance

你们中的任何人都知道什么会更好:

一个.获取一个字符串s,转换为char数组并循环遍历它,或者

湾 得到一个字符串s,循环它的子串(s.Substring(i, 1))?

任何提示非常感谢.

Hen*_*man 12

选项b),循环子串,是非常低效的.

最快的方法是

c)使用只读索引器属性直接遍历字符串字符:

for (int i = 0; i < s.Length; i++) { char c = s[i]; ... }
Run Code Online (Sandbox Code Playgroud)

或者,基于IEnumerable<char>界面:

foreach(char c in s) { ... }
Run Code Online (Sandbox Code Playgroud)


Mat*_*lls 6

(A)效率更高.但为什么不这样做:

foreach (char c in s)
Run Code Online (Sandbox Code Playgroud)

一些快速基准测试表明,这是一个微不足道的(差异<2%)效率低于

for(int i = 0; i < s.Length; ++i)
    char c = s[i];
Run Code Online (Sandbox Code Playgroud)

但我的观点是,前者的可读性使其优于除了时间最关键的代码之外的任何东西.