日期:2014-05-17  浏览次数:20697 次

string.Length>0成了性能杀手??性能差10倍...(散分,进者有分)
好久没来,给大家问好了!问个问题,进者有分。
有两个Dictionary

Dictionary<string, string> dic1,Dictionary<string, string> dic2

判断dic2的值中是否包含dic1中的任一值。
结果让我大跌眼镜,加上value.Length > 0 差了10倍?
C# 代码

        private bool IsHaveSame(Dictionary<string, string> dic1,Dictionary<string, string> dic2)
        {
            foreach (string value in dic1.Values)
            {
                if (value.Length > 0 && dic2.ContainsValue(value))//3162ms
                //if (dic2.ContainsValue(value))//248ms
                {
                    return true;
                }
            }
            return false;
        }

当然了,我在外部调用的代码大概是这个意思

            for (int i = 0; i < 5000 - 1; i++)
            {
                for (int j = i + 1; j < 5000; j++)
                {
                    if (IsHaveSame(dic1,dic2))
                    {
 
                    }
                }
            }
性能 string.Length>0

------解决方案--------------------
画蛇添足!
------解决方案--------------------
新手表示不懂,等大牛解释。谷歌去了
------解决方案--------------------
值,不会全是空串吧
------解决方案--------------------