Csharp/C#教程:是否有更快的方式来循环数千个项目?分享


是否有更快的方式来循环数千个项目?

假设我有一个包含100,000个字节的字节数组。 我想将每个字节转换为其自身的文本表示。 例如:

byte[] b = new byte[55000]; for(int i = 0; i < b.Length; i++) { Console.WriteLine(ConvertToString(b[i])); } 

上面的代码需要大约35秒才能完成,有什么方法可以将其减少到大约5秒钟吗?

正如我在评论中提到的,我建议删除Console.WriteLine()方法。 我还建议在循环中避免它。 通常,如果要查看正在处理的内容,可以使用Debug.WriteLine() ( MSDN )或设置断点(如果您的特定情况不正常,则甚至是条件断点)。 如果您需要再次返回数据,我建议使用字符串生成器:

 byte[] b = new byte[55000]; StringBuilder myStringBuilder = new StringBuilder(); for(int i = 0; i < b.Length; i++) { myStringBuilder.AppendLine(ConvertToString(b[i])); } Console.Write(myStringBuilder.ToString()); 

我喜欢的一件事是写一个Parallel.For循环 ,可能比现在更快。

  static void Main() { int[] nums = Enumerable.Range(0, 1000000).ToArray(); long total = 0; // Use type parameter to make subtotal a long, not an int Parallel.For(0, nums.Length, () => 0, (j, loop, subtotal) => { subtotal += nums[j]; return subtotal; }, (x) => Interlocked.Add(ref total, x) ); Console.WriteLine("The total is {0}", total); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } 

描述您的代码,看看哪种方法花费的时间最多。 将优化工作集中在该方法上。

上述就是C#学习教程:是否有更快的方式来循环数千个项目?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/955684.html

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐