Java - přetypování X datový typ int

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Zamčeno
Matiseli
Level 2.5
Level 2.5
Příspěvky: 381
Registrován: 24 čer 2014 19:30
Bydliště: Podíváte-li se roku 2023 na oblohu, tak na té planetě více v pravo

Java - přetypování X datový typ int

Příspěvek od Matiseli »

Zdravím vás,
již delší dobu mi leží na srdci (resp. v mysli :D) jedna otázka. Ta se především opírá o skutečnost, že datový typ byte nezabírá tolik místa v java paměti - tudíš, pokud vím, že, ku příkladu, budu nyní jistou metodu používat pouze pro malá čísla, mám se vyhnout přetypování (breachmark odhalil, že de fakto žádná ztráta výkonu při něm nehrozí)? Čili, mám napsat

Kód: Vybrat vše

objekt.metoda(intProměnná);
či
objekt.metoda((byte)intProměnná)
?
Ač mi jde převážně o výkon a spotřebu RAM, chápu i filozofii "čistého kódu".
Jaký postup by jste mi doporučili? Mám vytvářet metody s parametrem byte, či s int (když si sem vědom, že s velkými čísly pracovat nebudu)?
Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: 09 led 2015 12:49
Bydliště: Krkonoše
Kontaktovat uživatele:

Re: Java - přetypování X datový typ int

Příspěvek od satik »

Byte řeš jen, pokud se jedná o data v poli, jinak normálně int, nemá smysl se tímhle zabývat, vliv je buďto nulový nebo tak zanedbatelný, že je v podstatě neměřitelný.

Navíc byte může narušit zarovnání paměti, což ve výsledku může výkonově i uškodit (i když těžko říct, jak přesně je to u Javy :D ).
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7415
Registrován: 23 pro 2010 09:23

Re: Java - přetypování X datový typ int

Příspěvek od faraon »

Nevím jak to přesně dělá Java, ale třeba v Céčku se s typem char pracuje tak, že se nejdřív převede na int, a teprve potom provede příslušná činnost. Takže by to nakonec mohlo být ještě pomalejší než když tam plácneš jednoduše int.
Další otázka je již zmíněné zarovnání paměti, protože je velmi obvyklé že se proměnné ukládají na adresy dělitelné čtyřmi (u 64bitových strojů spíš osmi), tím pádem ti stejně zabere místo velké jako ten int nebo i větší.
Pokud to nemáš v poli nebo struktuře, nevyplatí se to.

Ono to přetypování by žádnou ztrátu výkonu ani způsobit nemělo, protože to je víceméně jenom poznámka pro překladač, která mu říká že tuhle hodnotu chceš opravdu použít tímhle způsobem, který by mohl dát chybný výsledek. Takže ti nevyhodí warning nebo error. Za běhu programu už tam nic takového neexistuje, prostě se rovnou provede to co jsi požadoval.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Zamčeno

Zpět na „Programování a tvorba webu“