ponedeljek, 05. september 2011

Butasti trik dneva - DateTime.UtcNow

Če bi vsakič, ko sem natipkal
DateTime.Now.ToUniversalTime()
natipkal le
DateTime.UtcNow
bi s tem prihranil 15 znakov! To bi pomenilo nesluten dvig produktivnosti, da o manjši obrabi tipkovnice in z vsem tem povezanimi finančnimi prednostmi sploh ne govorim.

No, čisto (IntelliSense) resno, tale UtcNow je predvsem bistveno bolj čitljiv.

Povrh vsega sem sem seveda sumil (educated guess) da tisti dodatni klic metode ToUniversalTime()nekaj stane. No, izkaže se, da je na mojem jurasičnem mlinčku po 10 milijonih meritev ta faktor v povprečju osupljivih 300.

Če želi kdo preveriti:

int loops = 10;
float ratio = 0;
for (int j = 0; j < loops; j++)
{
    long t1 = DateTime.Now.Ticks;
    for (int i = 0; i < 1000000; i++)
    {
        DateTime now = DateTime.Now.ToUniversalTime();
    }
    t1 = DateTime.Now.Ticks - t1;
    long t2 = DateTime.Now.Ticks;
    for (int i = 0; i < 1000000; i++)
    {
        DateTime now = DateTime.UtcNow;
    }
    t2 = DateTime.Now.Ticks - t2;
    ratio += t1 / t2;
    Console.WriteLine(String.Format("{2}: {0:d} => {1:g}", t1 - t2, t1/t2, j));
    }
Console.WriteLine(ratio / loops);