Kezdőoldal » Számítástechnika » Programozás » If feltétel nélkül lehetséges...

If feltétel nélkül lehetséges a következő?

Figyelt kérdés

Van egy hatalmas vektorom. Végigjárom és minden elemével csinálok valamit...meghívom a valami() függvényt. Na de én az első n elemmel mást szeretnék csinálni, mint az utolsókkal, ezért az n elemre meghívom a valami1() függvényt és a többire a valami2()-t. A végigiterálást egy for ciklussal oldom meg.

A kérdés:

Lehet-e úgy megkülönböztetni az első n-elemet a többitől, hogy ne használjak minden iterációban egy if feltételt, ami ellenőrzi az indexet?


Ez egy optimalizációhoz kéne...sajnos a futási idő már jelenleg nagy és nem engedhetem meg magamnak a temérdek if-et. Esetleg melyik lenne a legoptimálisabb megoldás?


2015. máj. 20. 20:29
 1/7 anonim ***** válasza:
100%
Iterálsz egyet n-ig, aztán meg egyet n+1től.
2015. máj. 20. 20:33
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:
Igen, erre én is gondoltam, de ez nem pc-n fog futni, hanem egy mikrokontrolleren. A vektor tulajdonképpen egy képnek egy oszlopa és a kép elérése lassabb folyamat (nem a lokális memórián van). Már csupán ahhoz, hogy a kép egyik oszlopát el akarom érni kell készítsek egy ROI-t (region of interest), ami egy kisebb kép és ezt dolgozom fel. Ha kétszer akarok hozzáférni a képhez, akkor nagyon belassul a program.
2015. máj. 20. 20:56
 3/7 A kérdező kommentje:
Természetesen az ROI a lokális memóriára kerül, hogy a hozzáférése ne legyen időigényes. A lényeg, hogy minél kevesebbszer szeretném az képet használni.
2015. máj. 20. 20:58
 4/7 anonim ***** válasza:
2 for ciklus?
2015. máj. 20. 21:01
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:
Nem a hozzáférés az időigényes, hanem végigiterálni minden egyes pixelén. Az hogy 2 részre bontva teszed ezt meg vagy egyszerre, teljesen mindegy, ugyan annyi utasítás fog lefutni.
2015. máj. 20. 21:18
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:
Mikrokontrollerhez nem értek nagyon, de a két ciklusba szedéssel próbálkoznék én is. Elsőre a polimorfizmusra gondoltam (if helyett), de az csak rontana a teljesítményen. Mellesleg a processzor cache kezelését finomhangolnám (az elemek elérését és a következő betöltését a memóriába), bár mikrokontrollernél gondolom ilyen sincs. Az algoritmuson nem lehetne alakítani, mert elég bruteforce-nak tűnik?
2015. máj. 20. 22:05
Hasznos számodra ez a válasz?
 7/7 iostream ***** válasza:

"Már csupán ahhoz, hogy a kép egyik oszlopát el akarom érni kell készítsek egy ROI-t (region of interest), ami egy kisebb kép és ezt dolgozom fel. Ha kétszer akarok hozzáférni a képhez, akkor nagyon belassul a program."


Akkor lekéred egyszer, és azon az egyen futsz végig először n-ig, aztán n-től. Nem értem a problémát.

2015. máj. 20. 22:24
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!