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 type | Master of Science |
| Author |
Jan Jakub Stępień II
Jan Jakub Stępień
|
| Title in Polish | Optymalizacja wywołań metod w Matz’s Ruby Interpreter |
| Supervisor |
Ilona Bluemke II
Ilona Bluemke
|
| Certifying unit | Faculty of Electronics and Information Technology (FEIT) |
| Affiliation unit | The Institute of Computer Science (IN) |
| Language | en angielski |
| Status | Finished |
| Issue date (year) | 2013 |
| Internal identifier | ENII-PM.001684 |
| Keywords in Polish | języki obiektowe, dynamiczne typowanie, maszyny wirtualne |
| Keywords in English | object-oriented languages, dynamic typing, virtual machines |
| Abstract in Polish | Ruby 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%. |
Back
