Kezdőoldal » Számítástechnika » Programozás » C++ ban hogy kell az alábbi...

C++ ban hogy kell az alábbi programot megoldani? írja ki a 55 töbszöröseit 1000 ig;

Figyelt kérdés
ciklussal kell ha minden igaz

2016. szept. 22. 08:18
1 2 3
 21/23 anonim ***** válasza:

Nem viccelek, egész egyszerűen olyan kódot generál a fordító ami az adott optimalizációnak a legjobban megfelel. Ha a méretet kell minimalizálni akkor ciklusnak megfelelő assembly kód lesz, amennyibben sebességre akkor egy kiírást egymás után 18-szor végrehajtani gyorsabb, mint ciklusos megoldással.


Neve is van: [link]

2016. szept. 23. 17:28
Hasznos számodra ez a válasz?
 22/23 anonim ***** válasza:

A vektorizáció teljesen más téma és az említett példakódon soha semelyik fordító sem fogja alkalmazni azt, nem véletlenül. A következő ciklus mindig függ az előzőtől. Nem úgy működik ahogy azt te leírtad. Nem mellesleg általában legfeljebb 4 utasítást tud párhuzamosítani az SSE és társaik. Fogj egy gcc-t, alkalmazd rajta a -O2 és a -ftree-vectorize kapcsolókat és nézd meg milyen kódot generál. Ha felismeri és képes is alkalmazni rajta vektorizációt akkor is ciklusban azt, 4-essével.


A 18x-os gyorsítás pedig egy kitaláció. Az előnye a ciklusnak pontosan az hogy a branch prediction életbe tud lépni és "előre" tud gondolkozni a CPU (akár párhuzamosan is).


Természetesen ilyen egyszerű kódnál alig ha lesz különbség a különböző fordítási módok között, de én azt ajánlom próbáld ki amit mondasz, nézd meg hogy tényleg úgy optimalizál a fordító ahogy azt te hiszed, és próbáld ki hogy tényleg 18x gyorsabban lefut e.

2016. szept. 23. 18:39
Hasznos számodra ez a válasz?
 23/23 anonim ***** válasza:

A vektorizációt valóban benéztem, de itt a kód amit generál a fordító, lehet te jobban leszűröd belőle miért csinálja ezt a loop helyett.

[link]

for (int i = 55; i <= 1000; i +=55) {

std::cout << i;

}



[link]

for (int i = 55; i <= 5000; i +=55) {

std::cout << i;

}

2016. szept. 23. 19:57
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!