saxus (statz) | #9, Agyfasz (419) |
1357 | #2a4b | ^ | Idézet | Mon, 27 Jan 2014 16:38:12 +01 |
86.101.*.* | *.business.broadband.hu |
.NET-ben viszont sok általánosságra rágyúrtank, gyúrnak folyamatosan. Pl. ott vannak a LinQ-s extension methodok. Alapvetően mind az IEnumerable<T> típushoz csapódnak, viszont egy-egy gyakran használt generikus típushoz vannak néha a felszín alatt plusz optimalizációk. Pl. egy int[] -re a Sum()-nál a leggyorsabb még mindig a foreach-os megoldás és a sima alap Enumerátoron keresztüli megoldás jóval lassabb. Ott pl. AFAIK ki van optimalizálva, hogy ne az alap megoldást használja. Vagy amit már említettem a stringműveletekkel: .NET 1.1-ben tényleg kurva lassú volt (bár azt nagyon kevesen használtak sztem, a .NET 2-vel kezdett el igazán terjedni), .NET 2-3 környékén rendbetették. C#/.NET mögött amúgy ez a koncepció: nem egyvalamiben próbálnak nagyon jók lenni, hanem minél többmindenben próbálnak hozni egy legalább átlagos szintet (még ha ez időnként a sebesség rovására megy) és minél több igényt lefedni, és megtámogatva azzal, hogy minél gyorsabban tudj vele kódolni. Mert általában ez a szűk keresztmetszet és nem a gép. Ha meg valami extra igényed van (pl. még absztraktabb dolgot akarsz írni - F#, vagy nem jó a statikus típusosság - ld. IronPython, vagy tényleg kell az a plusz pár százalék sebességben - C/C++ plusz hozzá a C++/CLR ragasztónak), akkor meg megvan a lehetőséged. |