Optimisation of Method Calls in Matz’s Ruby Interpreter

Jan Jakub Stępień

Abstract

Ruby is a dynamically typed object-oriented programming language. Despite various existing implementations of the language, the efficiency of the execution of the canoni cal virtual machine is still lacking. ‘The aim of this thesis is to increase the efficiency of aforementioned virtual machine. ‘Through a performance analysis of two implementations of the language—MRI and Rubinius—I propose three optimizations based on the acquired results. ‘These optimizations are focused in the area of methods’ invocations and are based on a two-phase approach. Firstly, a preliminary execution of processed Ruby code is per formed in order to gather information about types of objects whose methods were called. Secondly, ihe code is executed by a modified virtual machine which takes advantage of collected data in order to reduce costs of methods’ invocations. Proposed optimisations were applied to MM and their effectiveness was evaluated with a suite of benchmarks. Results show that introduced changes do not have a significant effect on MM’s perfor mance, however in certain cases an improvement of up to io% was achieved.
Diploma typeMaster of Science
Author Jan Jakub Stępień II
Jan Jakub Stępień,,
- The Institute of Computer Science
Title in PolishOptymalizacja wywołań metod w Matz’s Ruby Interpreter
Supervisor Ilona Bluemke II
Ilona Bluemke,,
- The Institute of Computer Science
Certifying unitFaculty of Electronics and Information Technology (FEIT)
Affiliation unitThe Institute of Computer Science (IN)
Languageen angielski
StatusFinished
Issue date (year)2013
Internal identifierENII-PM.001684
Keywords in Polishjęzyki obiektowe, dynamiczne typowanie, maszyny wirtualne
Keywords in Englishobject-oriented languages, dynamic typing, virtual machines
Abstract in PolishRuby to dynamicznie typowany, obiektowy język programowania. Mimo prac nad efektywnym wykonywaniem Ruby prowadzonych przez autorów różnych implementacji tego języka, wydajność kanonicznej maszyny wirtualnej nadal pozostawia wiele do ży czenia. Celem niniejszej pracy jest zwiększenie prędkości wykonywania kodu przez im plementację kanoniczną. Bazując na wynikach analizy dwóch implementacji języka, MRI i Rubinius, proponuję trzy optymalizacje. Mają one na celu zwiększenie wydajności wy woływania metod i opierają się na podejściu złożonym z dwóch etapów. W kroku pierw szym przetwarzany kod Ruby jest wykonywany na zmodyfikowanej maszynie wirtualnej zbierającej dane o typach obiektów, których metody są wywoływane. W kroku drugim maszyna wirtualna wykonujäca kod wykorzystuje zebrane uprzednio informacje w celu wydajniejszego wywoływania metod. Zaproponowane zmiany zostały naniesione na źró dła MRI a ich wpływ na prędkość działania maszyny wirtualnej został oceniony przy po mocy zestawu testów wydajnościowych. Wyniki eksperymentów pokazały, że wprowa dzone optymalizacje nie mialy istotnego wpływu na prędkość wykonywania kodu przez MM. Tym niemniej w niektórych przypadkach testowych osiagnięto wzrost wydajności nie przekraczający io%.

Get link to the record
msginfo.png

Back