Hlavní navigace

Názor k článku KolibriOS: kolibří systém v 5 MB od KarelI - Napsal jsem jednoduchy lowlevel test. Interface s metodami void...

  • Článek je starý, nové názory již nelze přidávat.
  • 23. 1. 2010 0:49

    KarelI

    Napsal jsem jednoduchy lowlevel test. Interface s metodami void add(), void add(int), 2 implementace, kazda do member promenne pricita nejake konstantni cislo, funkce

    void count(Iface * p) {
      for (int i = 0; i < 1000000000; i++)
        p->add();
    }


    Zalozil jsem instance a,b tech trid a dostal jsem tyto vysledky:
    nahodne vybrani a nebo b a 3× volani count s add()
    JIT 0.5s
    c++ 10s

    to same s addX(nahodna konstanta)
    JIT 0.56s
    c++ 13s

    to same s addX(i)
    JIT 2.2s
    c++ 13s

    jednou count s add()
    java bez JIT 14s

    Zaver – JIT dokaze za behu inlinovat virtualni metody, kdyz je vnitrek cyklu konstantni, tak ho dokaze i „rozbalit“. Jakykoli prekladac do nativu nema sanci, pokud si to nemuze vyhodnotit behem prekladu.
    Samozrejme je to extremni pripad, ale jako reakce na „JIT nemuze…“ to myslim staci.
    Pro me to znamena, ze se muzu klidne zabyvat navrhem a OOP v jave a nemusim delat nejake kompromisy v c++ aby to nebylo pomale. Kdyz navic vezmu v uvahu GC, ktery mi usetri dalsi praci a ve slozitejsich aplikacich je rychlejsi nez new/delete, tak je volba jasna :-)