[elektro] ARM gcc if-else
hg12345
hg12345 at freemail.hu
Tue Aug 16 11:13:54 CEST 2016
Hi,
milyen uC használsz, ha M3 akkor bitbanding próbáld meg, és ne konstansként hivatkozz a "konstansokra" ha regiszterből olvassa az gyorsabb.
"Péter Bozzay" <peterb.list at gmail.com> írta:
>Akár, meg nem is feltétlenül ciklusba szervezném, és úgyis teljesen
>más elven kell majd megközelítenem, ez most csak az adott eszköz
>előzetes vizsgálatához kellett inkább.
>
>Üdv,
>Péter
>
>Pipi <lista at puzsar.hu> írta (2016. augusztus 16. 9:57):
>> Hali!
>> Ha már sebességkritikus...
>> szerintem a lenti példában tök felesleges a shiftelés, gyorsabb ha az &
>> kifejezés "jól" van kitalálva :)
>>
>> Idézet (Péter Bozzay <peterb.list at gmail.com>):
>>
>>> Sziasztok,
>>>
>>> Kísérleteztem egy függvény optimalizálásával, amiben hívásonként
>>> sokszor futnak le ilyen blokkok:
>>>
>>> if ((data << i) & 0b10000000)
>>> {
>>> if (v1) PIN1_SET;
>>> else PIN1_RESET;
>>> if (v2) PIN2_SET;
>>> else PIN2_RESET;
>>> if (v3) PIN3_SET;
>>> else PIN3_RESET;
>>> }
>>>
>>> A makrók sima ÉS/VAGY regiszter módosítások, semmi extra.
>>> Függvényhívás előtt-után kapcsolt leddel mértem a futásidőt így, majd
>>> úgy is, hogy az else sorokat kivettem:
>>>
>>> -O0: 1355 / 1340 us
>>> -O1: 675 / 680 us
>>> -O2: 630 / 675 us
>>> -O3: 630 / 680 us
>>> -Os: 750 / 775 us
>>>
>>> Azaz -O2-től már számottevően nagyobb a futásidő, ha NINCS benne az
>>> else. Ez elég fura, különösen, hogy else nélkül egy "if (vx)
>>> PINx_SET;" sor csak 4 gépi utasítás, else-szel meg 5. Nem akarok most
>>> ettől jobban belemélyedni, asm-et nézegetni, mert úgyis alapjaiban át
>>> kell írnom az egészet, inkább csak érdekességképpen írtam le, hátha
>>> más is belefut hasonlóba. Ha eleve másképp, else nélkül kezdtem volna
>>> neki, akkor talán ki se derül, hogy akár 8%-kal gyorsabban is
>>> futhatna, ami itt nem elhanyagolható.
>>>
>>> Üdv,
>>> Péter
>>>
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>
>>
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>
>-----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list