- Akciókamerák
- Házimozi belépő szinten
- Jól szellőző és átépíthető házakkal jelentkezett a Corsair
- Milyen egeret válasszak?
- Kötelező frissítésnek számít a Microsoft legújabb csomagja a Windows 11-hez
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- A fényes siker is lehet szög a koporsóban: gondban a MacBook Neo gyártása
- RAM topik
- OLED TV topic
- Milyen TV-t vegyek?
Új hozzászólás Aktív témák
-
modder
aktív tag
válasz
MrSealRD
#4239
üzenetére
Esküszöm, nem értem, mit akarsz mondani Superhun válaszára.
De pár tény:
1) A JVM k*rva okos és tele van optimalizációval. Memória allokációnak alig van költsége, persze sok kis objektum lassíthatja a GC-t. Megoldás: arra az objektumra ne veszítsük el a referenciát, amit újra fogunk használni. Ennek megkönnyítésére szoktak memory poolokat implementálni Javában úgy, ahogy C++-ban is. De ezeket elég speckó esetekben szokták használni, amikor a sebesség van mindenek felett.
2) literálokra referencia mindig ugyanarra a memóriaterületre mutat. for() { String s = "nyorr"; } nem fog új objektumot létrehozni minden egyes iterációban
3) Olyan mikro-optimalizációról beszélünk, aminél egy adatbázis lekérdezés nagyságrendekkel lassabb: semmi értelme gondolkodni rajtaCiklusban String összefűzést StringBuilderrel, mert azt a compiler tudtommal nem ismeri fel, ellenben a "egy" + "ketto" + $valami.toString; kóddal, amit StringBuilderre cserél (vagy StringBuffer, most hirtelen nem emlékszem, melyik a thread-safe)
Nem látom értelmét String helyett StringBufferben tárolni a stringet.
Szerk.:
Közben rájöttem, mit akartál mondani, de elég veszélyes. Ha Stringbuilderben tárolod a stringeket, akkor a StringBuilder mutable, és olyan helyen is megváltoztathatod a String értékét, ahol nem akarod. pl.:StringBuilder strTime = getTimeInString();
page1.setLastVisited(strTime);majd később:
StringBuilder strTime = getTimeInString();
page2.setLastVisited(strTime);no shit, lastVisited szintén frissült page1-re, mert ugyanaz az objektum. Nem hiába találták ki, hogy a String immutable.
-
TBG
senior tag
válasz
MrSealRD
#4239
üzenetére
Ez csak abban az esetben jelenthet gondot, ha több tízezres/százezres nagyságrendben "kallódnak" az objektumok. Ergó, a felhasználástól is függ, hogy az ember hogyan hegyezi ki a kódot. Illetve érdemes-e nagyon kihegyzeni. Mindenesetre ökölszabály, hogy ha tökmind1, akkor is a szebb, takarékosabb megoldást használjuk.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- MSI Cyborg 15 A13VF 15.6" FHD IPS i7-13620H RTX 4060 16GB 512GB NVMe gar
- 27% - MSI RTX 5080 SHADOW 3X OC 16GB GDDR7 Videokártya! BeszámítOK
- Apple iPhone 15 Pro 128GB,Újszerű,Dobozaval,12 hónap garanciával
- Apple iPhone 17 Pro Max 256GB,Újszerű,Adatkabel,12 hónap garanciával
- ÚJ Asus TUF A14 FA401 -14"2.5K 165Hz - Ryzen 7 260 - 32GB - 1TB - Win11-RTX 5060 -2 év gari - MAGYAR
- 196 - Lenovo Legion Pro 5 (16IAX10) - Intel Core U7 255HX, RTX 5070 (ELKELT)
- HP ProDesk 600 G2 MT, i7-6700,8GB DDR4,256GB SSD,DVD-RW,WIN11
- iPhone 16 Pro 512GB 96% (1év Garancia) ! Utángyártott, jó minőségű kijelző !
- GYÖNYÖRŰ iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3972
- iPhone 11 Pro Max 64GB Midnight Green -1 ÉV GARANCIA - Kártyafüggetlen, MS4377
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


