SIMD műveletek Dart-ban (avagy miért érdemes Dart-ban programozni)

Egy rövid prezentáció a Dart-ban bevezetett SIMD műveletekről. Azért érdemes belenézni, mert itt már kezd felsejleni, hogy mi az értelme a Dart-nak. Vannak olyan dolgok, amik a JavaScript alkalmazások teljesítményét nyelv szinten korlátozzák. Ilyen például az, hogy a JavaScript tipikusan típus nélküli nyelv, így számolni csak lebegőpontos számokkal tud. A Dart-ban viszont opcionálisan használhatunk típusokat, ami alapján a fordító jobb kódot tud generálni. Egész számokat például egész számokként kezel (nem lebegőpontosként, mint a JS), amivel sokkal gyorsabban lehet számolni, és kevésbé erőforrás igényes (mobil eszközök, aksi, fogyasztás …). Hasonló kategória a SIMD műveletek (amiről a prezentáció szól), ahol egy műveletet több adaton hajtunk végre. Ez multimédiás alkalmazásoknál, 3D-s alkalmazásoknál, stb. gyakori dolog (ez a lényege pl. az MMX, 3DNow, SSE utasításkészleteknek x86-os procikon). Ezeket a jelenlegi JavaScript motorok is használják, de csak olyan szinten, hogy a fordító "megpróbálja kitalálni", hogy hol lehetne ilyesmit alkalmazni, ami nem olyan hatékony, mint ha explicit módon megadjuk ezt, és erre optimalizáljuk a kódot. Az ilyen feature-ök hosszú távon a Dart-ot a leghatékonyabb script nyelvvé tehetik, amivel olyan kód készíthető, aminek sebessége vetekszik a natív alkalmazásokéval. A Java teljesítményét talán már most is eléri (talán túl is szárnyalja) a Dart, de így a jövőben akár C, és natív alkalmazások helyett is érdemesebb lehet Dart-ot használni. Persze jelenleg ennek nincs túl sok értelme, mivel Dart kódot maximum a Chrome tud futtatni, és még ő sem alapértelmezetten, de ha elterjed, sok szempontból jobb választás lehet, mint a JS vagy akár a Java. Mondjuk nem tudhatjuk azt sem, hogy a JavaScript addigra hol fog tartani, esetleg nem-e emelnek át ilyen Dart-os feature-öket, mint amilyen az opcionális típusosság, ami megint a JavaScriptet teszi majd erősebbé …  

#blog  

https://docs.google.com/presentation/d/1zfucLA3XNqRb7W56ldU_Biya-IrS00QmSuXNYwewlyg/edit?forcehl=1&hl=hu#slide=id.p19