hash和switch在日常编码中都比较常用,所以对他们哪个效率更高有点好奇,求大大分析下
例如:
switch
switch ("goodday")
{
case "lastday":
s = s + 1;
break;
case "sds":
s += 2;
break;
case "dsd":
s += 3;
break;
case "dsdw":
s += 4;
break;
case "dsds":
s += 5;
break;
case "goodday":
s += 6;
break;
case "dsdsd":
s += 7;
break;
case "rrr":
s += 8;
break;
case "ssss":
s += 9;
break;
case "gggg":
s += 10;
break;
}
hash:
Hashtable Funcs=new Hashtable();
Func<int, int> a = s => s = s + 1;
Func<int, int> b = s => s = s + 2;
Func<int, int> c = s => s = s + 3;
Func<int, int> d = s => s = s + 4;
Func<int, int> e = s => s = s + 5;
Func<int, int> f = s => s = s + 6;
Func<int, int> g = s => s = s + 7;
Func<int, int> h = s => s = s + 8;
Func<int, int> i = s => s = s + 9;
Func<int, int> j = s => s = s + 10;
Funcs.Add("goodday", a);
Funcs.Add("lastday", b);
Funcs.Add("sds", c);
Funcs.Add("dsd", d);
Funcs.Add("dsdw", e);
Funcs.Add("dsds", f);
Funcs.Add("dsdsd", g);
Funcs.Add("rrr", h);
Funcs.Add("ssss", i);
Funcs.Add("gggg", j);
int di = 0;
var temp = Funcs["goodday"] as Func<int, int>;
di = temp(di);
根据vs自带的分析工具:
貌似hash要更快一点
switch:
hash: