Språket används inte bara av människor utan även webbplatser använder det. Språket är ett av de största problemen som programmerare står inför, särskilt när Ruby's är frågan. Prestandan som Ruby's ger kan vara en av anledningarna till att programmerare inte skulle vilja använda språket. På grund av klagomålen på prestandan om Ruby's visar det bara att ramverket kommer efter från andra ramverk som används av programmerare idag. Även om dessa problem har inträffat på grund av Ruby's, är det lätt att använda.
Frågan kommer alltid att vara, hur kan man nå parallellitet med Rubys MRT?
För att svara är den bästa lösningen att ha de 1/0 bundna trådarna. Trådarna kan påverka den parallellitet som syns i processorerna idag. Ruby MRI är känt för att vara en icke-anhängare av parallellism. Även om du har många trådar, med Ruby MRI, kommer bara en tråd att köras kontinuerligt och det är på grund av GIL.
Det finns påståenden att Ruby MRI inte kommer att hjälpa till att nå parallellitet och det är allt på grund av GIL, som är ansvarig för att införa restriktioner för trådar. På grund av detta tror folk att Rubyn är värdelös och inte är en bra hjälp för att nå parallellism. Dessa påståenden kan vara tillräckligt sanna om du använder CPU-bundna operationer. Varför? När du använder CPU-bundna operationer kommer en bra prestanda aldrig att vara uppenbar och kommer alltid att ha låg prestanda och allt beror på att trådschemaläggningen hanteras av användarutrymmet och GIL spelar en stor roll eftersom det är den som begränsar trådar.
I motsats till dessa påståenden är de I/O-bundna trådarna de som hjälper till att låta Ruby MRI nå parallellism. De I/O-bundna trådarnas hastighet begränsas av I/O som finns i datorer. Den som hanterar de I/O-bundna trådarna är Ruby-tolken som finns i kärnutrymmet. Eftersom Ruby-tolken är placerad externt kan de I/O-bundna trådarna köras fritt eftersom begränsningar inte finns och kommer att kunna köras parallellt eftersom GIL inte finns. Kärnutrymmet är det som är ansvarigt för att schemalägga de I/O-bundna trådarna som låter dem köras kontinuerligt på många hubbar.
Om du vill att dina trådar ska löpa och nå parallellitet utan några restriktioner, är Ruby MRI med I/O-bundna trådar det bästa alternativet. Till skillnad från att använda CPU-bundna operationer kan du troligen stöta på många begränsningar i din tråd eftersom GIL är närvarande. Oavsett hur många trådar du än, om GIL finns, kan bara en tråd köras samtidigt. Ändå, om du använder Ruby MRI med I/O-bundna trådar, kan din prestanda förbättras och kommer definitivt att nå parallellism. Dessutom, om du arbetar med en I/O-bunden uppgift, är Ruby MRI med I/O-bundna trådar något för dig eftersom den kan köras parallellt och kommer inte att hindra dig från att ha flera trådar. Kom bara ihåg att dina trådar ska vara säkra hela tiden.