Ha számokat adunk össze C++ nyelven, akkor a kicsi és nagy számok összeadása között van különbség időben?
Ha a méret alatt a típus méretét érted, akkor igen. Ha az ábrázolt szám matematikai értelemben vett nagyságát, akkor nem.
A platformnak van egy szélessége, ez asztali gépeknél 32 vagy 64 bit. Ezzel a mérettel dolgozik a leggyorsabban a gép, ezért szokott az int ekkora lenni.
na, azért ezt nem hiszem el.
a 0+valami szerintem hamarabb megy, mert a kódban biztosan van egy if erre az esetre, hogy térjen vissza a rögtön a bemeneti számmal, nem?
Ha konkrétan te azt írod bele a kódba, hogy :
int a;
a = 0 + 123;
akkor lehetséges, hogy a fordító optimalizálja a kódot, és simán annyi lesz belőle, hogy a = 123;
Sőt, ha azt írod bele, a = 123 + 456;, akkor azt is optimalizálja a fordító, és simán a = 579; lesz belőle.
DE: Ennek semmi köze a végrehajtás idejéhez, hanem fordítási időben történik.
Viszont, ha mindezt változókkal csinálod, pl:
int a = 0;
int kisszam1 = 5;
int kisszam2 = 6;
int nagyszam1 = 1234567;
int nagyszam2 = 3456789;
Ebben az esetben az a = kisszam1 + kisszam2; és az a = nagyszam1 + nagyszam2; utasítások végrehajtási ideje pontosan ugyanannyi idő lesz. A CPU két darab 32(vagy 64, platformtól függően) bit nagyságú értéket mindig ugyanannyi idő alatt ad össze, függetlenül attól, hogy milyen érték van bennük. Lusta vagyok elmagyarázgatni, hogy működik ez nagyon alacsony szinten, de nézz utána, ha ennyire érdekel:
Más a szituáció persze, ha valami bigint-es library-t használsz, mert ilyenkor nem feltétlenül férnek be az összeadandó számok egy regiszterbe, ilyenkor assembly szinten már nem egy sima ADD történik, hanem MOV-olgatni kell, meg ADC, meg stb. Tehát ilyenkor nyilván több időbe telik.
A számtípusok mérete számít. Két byte-ot gyorsabban ad össze, mint két shortot. Két shortot gyorsabban ad össze, mint két longot.
A tárolható szám mérete az egyes típusokban:
byte < short < long
az int platformfüggő, vagy short, vagy long, és automatikusan konvertálódnak, ha kell.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!