abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:33 | IT novinky

    Čeští policisté společně se svými tureckými kolegy zadrželi 51 lidí, kteří se podle kriminalistů podíleli na provozu podvodného call centra v Istanbulu. Skupina je spojena s 1173 případy podvodů na českých občanech, při kterých vznikla škoda přes 553 milionů korun.

    Ladislav Hagara | Komentářů: 0
    3.7. 03:55 | Nová verze

    Immich byl vydán v nové verzi 3.0.0. Jedná se o alternativu k výchozím aplikacím od Googlu a Applu pro správu fotografií a videí umožňující vlastní hosting serveru Immich. K vyzkoušení je demo. Immich je součástí balíčků open source aplikací FUTO. Zdrojové kódy jsou k dispozici na GitHubu pod licencí AGPL-3.0.

    Ladislav Hagara | Komentářů: 5
    3.7. 02:55 | IT novinky

    Společnost Juno Computers prodávající počítače s předinstalovaným Linuxem má nově v nabídce linuxový tablet Juno Tab 4 - WiFi. Na výběr je Debian, Ubuntu a Kubuntu. Předobjednat jej lze za 949 liber (26 500 korun).

    Ladislav Hagara | Komentářů: 0
    3.7. 01:22 | Nová verze

    Podman (Pod Manager), nástroj umožňující vytvářet a provozovat kontejnery, aniž by uživatel potřeboval práva roota, byl vydán v nové major verzi 6.0.0. Přehled novinek v poznámkách k vydání. Řešena je i vážná bezpečnostní chyba CVE-2026-57231.

    Ladislav Hagara | Komentářů: 0
    3.7. 00:11 | IT novinky

    Společnost Sony oznámila, že od ledna 2028 přestane vydávat nové hry pro PlayStation na fyzických discích. Všechny budoucí tituly budou dostupné výhradně v digitální podobě na PlayStation Store.

    Ladislav Hagara | Komentářů: 6
    2.7. 16:55 | Nová verze

    Google Chrome 150 byl prohlášen za stabilní. Nejnovější stabilní verze 150.0.7871.46 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 433 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    2.7. 13:00 | Nová verze

    Soudní dvůr Evropské unie potvrdil rekordní pokutu 4,125 miliardy eur (100 miliard Kč) americké technologické firmě Google ze skupiny Alphabet. Pokutu firmě v roce 2018 vyměřila Evropská komise (EK) za to, že Google podle ní zneužívá operačního systému Android k potlačení konkurence na trhu vyhledávacích služeb.

    Ladislav Hagara | Komentářů: 17
    2.7. 12:44 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa povolila firmě Anthropic obnovit plný přístup klientů k modelům umělé inteligence (AI) Fable 5 a Mythos 5. Ty byly nedostupné bezmála tři týdny kvůli bezpečnostním obavám vlády, třebaže americké ministerstvo obchodu minulý pátek povolilo omezený přístup k modelu Mythos 5 pro některé „důvěryhodné“ domácí organizace.

    Ladislav Hagara | Komentářů: 1
    2.7. 12:22 | Zajímavý článek

    Francúzska organizácia na ochranu spotrebiteľa, po viac než ôsmych rokoch skúmania, žaluje Epson za plánované zastarávanie tlačiarní. Súd sa začína dnes, 2. 7. 2026, vo francúzskom Nanterre.

    Vlado99 | Komentářů: 9
    2.7. 03:00 | Zajímavý software

    Erin Catto, autor open source 2D fyzikálního enginu Box2D (Wikipedie), představil nový 3D fyzikální engine Box3D. Engine je již používán ve hře The Legend of California.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (16%)
     (25%)
    Celkem 2053 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Dotaz: zrychlení opakovaného volání virtuálních funkcí pomocí boost::bind?

    14.11.2009 22:34 vencas | skóre: 32
    zrychlení opakovaného volání virtuálních funkcí pomocí boost::bind?
    Přečteno: 213×
    Zdravím,

    chci se zeptat (než to budu pořádně zkoušet a měřit), jestli je možné urychlit časté a opakované volání virtuální funkce na objektu tak, že udělám virtuální funkci vracející pointer na nevirtuální funkci, která se příště bude (přes ten pointer) volat přímo, nevirtuálně. Využiju k tomu navázání pointeru na instanci pomocí boost::bind.

    Původní scénář:
    struct A{
       virtual int compute(int foo){ /* výpočet A */ }
    };
    struct B: public A{
       virtual int compute(int foo){ /* výpočet B */ }
    };
    
    vector<objekt*> objekty; // naplnit pole etc.
    
    for(int i=0; i<100000; i++){
       // tady se pro každý objekt v každém kroku resolvuje virtuální funkce, přitom výsledek pro kažedý objekt vždy stejný
       BOOST_FOREACH(const objekt*, objekty){ sum+=objekt->compute(bar); }
    }
       
    
    kde je nějaká množina objektů, na kterých se compute mnohokrát opakovaně volá.

    Nový scénář:
    struct A{
       typedef boost::function<int(int)> computePtrT;
       computePtrT compuptePtr;
       int computeA(int foo){ /* výpočet A */ } // neni virtualni!
       virtual computePtrT getComputePtr(){ return boost::bind(&A::computeA,this,_1); }
    };
    struct B: public A{
       int computeB(int foo){ /* výpočet B */ } // neni virtualni
       virtual computePtrT getComputePtr(){ return boost::bind(&B::computeB,this,_1); }
    };
    
    for(int i=0; i<100000; i++){
       BOOST_FOREACH(const objekt*, objekty){
          // při prvním cyklu se voláním virtuální funkce nastaví pointer na nevirtuální funkci (computeA nebo computeB)
          if(!objekt->computePtr) objekt->computePtr=objekt->getComputePtr();
          sum+=objekt->computePtr(bar);
       }
    }
    
    Díky za komentáře.

    Řešení dotazu:


    Odpovědi

    14.11.2009 23:06 Jirka P.
    Rozbalit Rozbalit vše Re: zrychlení opakovaného volání virtuálních funkcí pomocí boost::bind?
    Silně pochybuji - dokonce myslím, že zrychlení není možné, protože samotný boost::function při volání používá virtuální funkci.
    15.11.2009 16:36 vencas | skóre: 32
    Rozbalit Rozbalit vše Re: zrychlení opakovaného volání virtuálních funkcí pomocí boost::bind?
    Tak jsem to zkoušel, a kód byl dokonce pomalejší. (Myslel jsem nejdřív, že bude třeba změnit program na mnoha místech, tak jsem s tím nechtěl nejdřív hned experimentovat, ale šlo to vcelku snadno.) Díky.
    14.11.2009 23:06 Jirka P.
    Rozbalit Rozbalit vše Re: zrychlení opakovaného volání virtuálních funkcí pomocí boost::bind
    Silně pochybuji - dokonce myslím, že zrychlení není možné, protože samotný boost::function při volání používá virtuální funkci.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.