Давайте используем некоторые Reflector-Magic для этих функций (все из DateTime-Type):
Оператор ">"
public static bool operator >(DateTime t1, DateTime t2)
{
return (t1.InternalTicks > t2.InternalTicks);
}
private long InternalTicks
{
get
{
return (((long) this.dateData) & 0x3fffffffffffffffL);
}
}
// this.dateData is a private field
Сравнить
public static int Compare(DateTime t1, DateTime t2)
{
long internalTicks = t1.InternalTicks;
long num2 = t2.InternalTicks;
if (internalTicks > num2)
{
return 1;
}
if (internalTicks < num2)
{
return -1;
}
return 0;
}
CompareTo
public int CompareTo(DateTime value)
{
long internalTicks = value.InternalTicks;
long num2 = this.InternalTicks;
if (num2 > internalTicks)
{
return 1;
}
if (num2 < internalTicks)
{
return -1;
}
return 0;
}
Давайте разберем это:
Оператор>
- Два вызова против частной собственности
- Каждый вызов выполняет один бросок и один двоичный файл
And
Compare and CompareTo
- Создает две переменные и сравнивает их
CompareTo
, скорее всего, быстрее, поскольку ему не требуется доступ к объекту outside
, но вместо этого он может нарисовать одну из переменных изсама.
Редактировать: Из анализа функций я понимаю, что производительность >
всегда должна оставаться неизменной, в то время как производительность Compare
и CompareTo
основана напереданные значения:
- t1 больше: самый быстрый
- t2 больше: средний
- t1 == t2: самый медленный
Хоть,выигрыш или потеря производительности, о которых мы говорим, это ... как бы сказать ... мне наплевать.;) Но это тихо интересно, я согласен.