Hirdetés

Új hozzászólás Aktív témák

  • fpeter84

    senior tag

    válasz Teasüti #2972 üzenetére

    szép mondhatom, elültetted a bogarat a fülemben és alvás helyett benchmarkolásra adtam a fejem, pedig 2 óra múlva szól az ébresztő :W :DDD

    uint32_t pre = 0;
    uint32_t now = 0;
    uint32_t cnt = 1;

    uint32_t cnt2 = 0;

    uint32_t a = 0;
    uint32_t c = 0;

    //float a = 0;
    //float c = 0;

    void setup() {
    Serial.begin(115200);
    Serial.println("Hello World!");
    }

    void loop()
    {
    a = 1;

    for (cnt=0; cnt<10000; cnt++)
    for (cnt2=0; cnt2<250; cnt2++)
    c = a+cnt2;

    now = millis();
    Serial.println( 2500000/(now-pre) );
    pre = now;
    }

    (a cnt2, a és c változók típusát írtam át uint8..32_t illetve az a és c-t float-ra)

    Remélem szarvas hibát nem követtem el a programban... 2.5M-szor kiszámolja ugyanazt a műveletet, majd visszaosztja másodpercre viszonyítva. Azért dupla a ciklus mert ha csak 2 fix értéket adtam össze ennyiszer akkor nagyon úgytűnik hogy arra rájött a fordító és leegyszerűsítette és nem adott különbséget sehol... Az eredményt Kcycle/sec-ben dobja ki vagyis hogy másodpercenként hány ezerszer tudta végrehajtani az adott műveletet. A harmadik oszlop hármas pedig azt mutatja hogy a Due hányszoros értéket tudott a Nano-hoz képest, és így szépen látszik a Due 5.25-szörös órajel előnye, valamint az hogy minél nagyobb számmal dolgozik a 8 bites Nano, annál jobban megküzd vele, a hardveres osztásnak köszönhetően pedig egészen elképesztőre nő a 32 bites Cortex M3 mag előnye - hardveres FPU az M3-ban nincsen, a nagyobbakban is csak opcionális [link]

Új hozzászólás Aktív témák