( XMI | 2006. 04. 03., h – 00:09 )

calloc()-kal is mértem, aminek elvileg ki kell nulláznia a területet C-ben is és ott is elég jelentős eltérés volt asszem talán, olyan 7-8x körüli. Ráadásul a nagy különbség főleg kevés attribútum esetén jött elő, tehát szerintem nem a kinullázás a domináns különbség oka, sokkal inkább ilyen extra runtime ellenőrzések lehetnek.

Persze sok buktatója is van a dolognak, főleg a cpu cache tud bekavarni, az szerintem kis objektumoknál teljesen el is tudja fedni a kinullázás hatását. Ennek persze örülni kell, hisz azért van a cache, hogy tegye a dolgát. Pl az is igen érdekes volt, hogy egy nagy láncolt lista végigjárása és minden elemben egy attribútum módosítása majdnem tökéletesen pontosan azonos idő alatt fut le C és Java alatt is (paraméterezéstől függetlenül!), ami arra enged következtetni, hogy sikerült egy remek memória-sávszélesség mérő benchmarkot írnom.

Nyilván elég sok mindent meg kéne nézni még, sokféle paraméterekkel, különféle hardvereken, hogy valami komolyabb következtetést lehessen levonni az eredmények okát illetően. Mindenestre nekem elég tanulság az, hogy teljesítménykritikus alkalmazások esetén valahogy a példányosításokon célszerű lefaragni és azzal tekintélyes időt lehet nyerni.
---
Apparently the human mind is not unlike cookie dough.