如何昂贵是一个GUID演员和比较VS字符串比较 [英] How expensive is a GUID cast and comparison vs a string comparison
本文介绍了如何昂贵是一个GUID演员和比较VS字符串比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这将是更快?
布尔相同=(GUID)标识符== ID;
布尔相同= String.Equals(字符串1,字符串,StringComparison.OrdinalIgnoreCase);
解决方案
我用这个代码:
对象受害人= Guid.Empty;
的Guid =目标Guid.NewGuid();
秒表SW =新的秒表();
sw.Start();
的for(int i = 0; I<千万,我++){$ B $ B布尔等于=((GUID)受害者)==目标;
}
Console.WriteLine(直接投:{0},sw.Elapsed);
sw.Reset(); sw.Start();
的for(int i = 0; I<千万,我++)
{
布尔等于= Guid.Equals(受害者,目标);
}
Console.WriteLine(Guid.Equals:{0},sw.Elapsed);
sw.Reset(); sw.Start();
字符串= victim.ToString(); //通过了Mikael
字符串B =建议target.ToString();
的for(int i = 0; I<千万,我++)
{
布尔等于= String.Equals(A,B,StringComparison.OrdinalIgnoreCase);
}
Console.WriteLine(String.Equals:{0},sw.Elapsed);
到Console.ReadLine();
和得到这个结果对于不同的值(最好的情况):
对象受害人= Guid.Empty;
的Guid =目标Guid.NewGuid();
//直接投:00:00:00.1164198
// Guid.Equals:00:00:02.1268147
// String.Equals:00:00:00.4129527 //噢,我的!
和这个结果为相同的值(更糟糕的情况)
对象受害人= Guid.Empty;
的Guid =目标Guid.Empty;
//直接投:00:00:00.2793173
// Guid.Equals:00:00:03.5625948
// String.Equals:00:00:01.7564302
which would be faster?
bool same=(Guid)Identifier==id;
bool same=String.Equals(string1,string2, StringComparison.OrdinalIgnoreCase);
解决方案
I used this code:
object victim = Guid.Empty;
Guid target = Guid.NewGuid();
Stopwatch sw = new Stopwatch();
sw.Start();
for (int i = 0; i < 10000000; i++){
bool equal = ((Guid) victim) == target;
}
Console.WriteLine("Direct cast : {0}", sw.Elapsed);
sw.Reset(); sw.Start();
for (int i = 0; i < 10000000; i++)
{
bool equal = Guid.Equals(victim, target);
}
Console.WriteLine("Guid.Equals : {0}", sw.Elapsed);
sw.Reset(); sw.Start();
string a = victim.ToString(); // as suggested by Mikael
string b = target.ToString();
for (int i = 0; i < 10000000; i++)
{
bool equal = String.Equals(a, b, StringComparison.OrdinalIgnoreCase);
}
Console.WriteLine("String.Equals : {0}", sw.Elapsed);
Console.ReadLine();
And got this result for different values (best scenario):
object victim = Guid.Empty;
Guid target = Guid.NewGuid();
// Direct cast : 00:00:00.1164198
// Guid.Equals : 00:00:02.1268147
// String.Equals : 00:00:00.4129527 // oh my!
And this result for same value (worse scenario)
object victim = Guid.Empty;
Guid target = Guid.Empty;
// Direct cast : 00:00:00.2793173
// Guid.Equals : 00:00:03.5625948
// String.Equals : 00:00:01.7564302
这篇关于如何昂贵是一个GUID演员和比较VS字符串比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文