Som nováčka pre Ruby a JRuby a snažila som saaby implementoval viacvláknový kód v Ruby a dozvedel sa, že GIL neumožňuje, aby môj kód bežal paralelne, potom som sa presťahoval do JRuby a implementoval ten istý kód a moja doba vykonania v JRuby bola oveľa lepšia ako Ruby.I študoval, že JRuby rezanie je veľmi podobný závitov v Java, tak som implementoval rovnaký v kóde v Java a tiež som dostal výkon (vykonávacie čas) v Java byť takmer 10x rýchlejšie ako JRuby, môže mi niekto vysvetliť dôvod pre to? záloha
odpovede:
0 pre odpoveď č. 1vysvetlenie je pomerne jednoduché, keď si myslíteo tom, že JRuby je Ruby implementovaný v jazyku Java, čo znamená, že máte "viac" Java kódu na vykonanie pomocou .rb kusu v porovnaní s jednoduchým .java zostavený do .class ...
ako aj v prípade, že odoslanie metódy bolo bezproblémové, tam je dynamická povaha Ruby, napríklad keď ste a+1
na Java pridáva k ints počas a+1
v Ruby je jeho prídavok s prepadmi atď.
Vaša otázka je celkom všeobecná a my takisto nieviete, aký druh merania výkonnosti ste urobili, ale nakoniec to všetko dopadá na produktivitu, keď robíte "reálny svet" prácu + s JRuby, ak máte pocit, že nejaká časť stojí za to byť 10x rýchlejšia, stále máte možnosť opätovne robiť to kus v "natívnom" Java.