Hirdetés
Ú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.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Üzletből, garanciával, Lenovo ThinkPad T14sRyzen 7 Pro-4750u/32GBRAM/256GBSSD/FULLHD IPS TOUCH
- Victus 16.1" FHD IPS i5-11400H RTX 3050 16GB 512GB NVMe magyar vbill gar
- NZXT Kraken X52 / Beszámítás OK!
- Samsung PM961 250GB M2 NVMe PCIe SSD
- Asztali PC , i9 14900K , RTX 4070 Super , 32GB DDR5 , 1TB vNME , 3TB HDD
- Samsung Galaxy Watch5 LTE 40mm, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! Apple MacBook Pro 16 M1 Max 32GB RAM 1TB SSD notebook garanciával hibátlan működéssel
- Dell Precision 5530 15,6" FHD, i7 8850H, 16GB RAM, Quadro 4GB VGA, 512GB SSD, jó akku, számla, gar
- GeForce RTX 2060 (OEM HP) Garanciával
- HP EliteBook 640 G10 - 14" FullHD IPS - i5-1335U - 8GB - 512GB - Win11 - 1 év garancia - MAGYAR
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

