for Loop的性能问题?

时间:2010-06-24 14:47:00

标签: c#

考虑以下计划,

     List<string> l_lstRawData = new List<string>();
     ........
     ........

现在l_lstRawData填充了数据,例如

    l_lstRawData[0] = "11111101101010................................0000011101010101";
    l_lstRawData[1] = "11111101111111...............................0000011101010101";
    l_lstRawData[2] = "11111101101010................................0000011101010101";
    l_lstRawData[3] = "11100001101010................................0000011101010101";
    l_lstRawData[4] = "11000101101010................................0000011101010101";
    l_lstRawData[5] = "11111101101010................................0000011101010101";

现在我想要结果         List l_lstResultData = new List();

    l_lstResultData [0] = "111111";
    l_lstResultData [1] = "111111";
    l_lstResultData [2] = "111101";
    l_lstResultData [3] = "111001";
    l_lstResultData [4] = "111001";

这是我正在使用的代码, l_lstRawData的长度等于l_lstRawData中的每个元素

    string l_strTempData  = "";
    for(int l_nData;l_nData< l_lstRawData.Length;l_nData++)
    {
         l_strTempData  = "";
         for(int l_nItem = 0;l_nItem< l_lstRawData.Length;l_nItem++)
         {
             l_strTempData += l_lstRawData[**l_nData**].ToString();   
         }      
         l_lstResultData.Add(l_strTempData );
    }

它需要很长时间,因为l_lstRawData长度的每个项目超过60,000 ..... 是否可以使用任何其他方法?

如果你有任何疑问,请回复我。

3 个答案:

答案 0 :(得分:6)

哦,男孩,是的,字符串连接真的很慢。您应该考虑使用StringBuilder类

http://msdn.microsoft.com/en-us/library/2839d5h5%28VS.71%29.aspx

答案 1 :(得分:1)

您可以先使用stringbuilder而不是字符串连接。

其次,您在循环中所做的事情可以使用非常快的子字符串方法来完成。

答案 2 :(得分:0)

使用StringBuilder!字符串是不可改变的(它们不会改变)。每次连接字符串时,运行时都会使用新内容创建一个NEW字符串,并提供旧版本的垃圾收集。当你在循环中执行此操作时,这可能会成为一个重大问题。请改用StringBuilder,你会看到一个巨大的差异。