Prikaz objav z oznako c#. Pokaži vse objave
Prikaz objav z oznako c#. Pokaži vse objave

ponedeljek, 5. 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);

petek, 8. julij 2011

Butasti trik dneva - Visual Studio zvoki

Tole sem odkril zadnjič bolj kot ne po naključju.
Visual Studio (2010) definira svoje sistemske dogodke, ki jim lahko priredim zvoke! Na prvi pogled deluje to popolnoma neuporabno (kot večina sistemskih zvokov), je pa v resnici neverjetno koristno.

Recimo da imam/razvijam kos softvera, ki se občasno sesuje na neponovljiv način, večino časa pa dela pravilno. Predvsem lahko traja zelo dolgo, da se napaka sploh zgodi, saj je lahko odvisna od kakih zunanjih pogojev, ki niso pod mojo kontrolo. Izjemo sicer (lahko) ujamem v catch bloku, kjer je breakpoint in tako preverim okoliščine. Kot rečeno pa lahko traja zelo dolgo, da se sploh kaj zgodi. Med tem časom bi raje delal kaj pametnejšega, kot da čakam, da v taskbaru utripne Visual Studio (kar seveda spregledam in se zaradi tega zgodi še nekaj timeoutov povezanih z okoliščinami napake).

No, tu nastopi zdaj zvočni dogodek "Breakpoint Hit", na katerega sem si nastavil zvok, ki me opozori, da se je izvajanje ustavilo na breakpointu. Torej lahko zdaj med čakanjem mirno delam kaj drugega in mi ni treba stalno z enim očesom škiliti na VS.

Pri buildanju velikih projektov, ki lahko traja tudi več (deset) minut sta koristna zvoka "Build Succeeded" in "Build Failed". Tisti enterprise ninja developerji, ki imate continous build server farme in podobno, pa se gotovo ne ukvarjate s takimi trivialnostmi.

Aja, zvoke se nastavi v nadzorni plošči (primer Windows XP):

Control Panel -> Sounds and Audio Devices