Avaliação De Performance De Interpretadores Ruby

Total Page:16

File Type:pdf, Size:1020Kb

Avaliação De Performance De Interpretadores Ruby Universidade Federal de Santa Catarina Centro Tecnológico Curso de Sistemas de Informação Wilson de Almeida Avaliação de Performance de Interpretadores Ruby Florianópolis 2010 Wilson de Almeida Avaliação de Performance de Interpretadores Ruby Monograa apresentada ao Curso de Sistemas de Informação da UFSC, como requisito para a obten- ção parcial do grau de BACHAREL em Sistemas de Informação. Orientador: Lúcia Helena Martins Pacheco Doutora em Engenharia Florianópolis 2010 Almeida, Wilson Avaliação de Performance de Interpretadores Ruby / Wilson Al- meida - 2010 xx.p 1.Performance 2. Interpretadores.. I.Título. CDU 536.21 Wilson de Almeida Avaliação de Performance de Interpretadores Ruby Monograa apresentada ao Curso de Sistemas de Informação da UFSC, como requisito para a obten- ção parcial do grau de BACHAREL em Sistemas de Informação. Aprovado em 21 de junho de 2010 BANCA EXAMINADORA Lúcia Helena Martins Pacheco Doutora em Engenharia José Eduardo De Lucca Mestre em Ciências da Computação Eduardo Bellani Bacharel em Sistemas de Informação Aos meus pais e meu irmão. Aos familiares e amigos, em especial pra mi- nha eterna amiga Liliana, que está torcendo por mim de onde ela estiver. Agradecimentos Agradeço ao meu amigo, colega de curso, parceiro de trabalhos e orientador Eduardo Bellani, pelo encorajamento, apoio e seus ricos conselhos sobre o melhor direci- onamento deste trabalho. A professora Lúcia Helena Martins Pacheco pela orientação, amizade, e pela paciência, sem a qual este trabalho não se realizaria. Ao professor José Eduardo Delucca, por seus conselhos objetivos e pontuais. Todos os meus amigos que incentivaram e compreenderam a minha ausência nesse período de corrida atrás do objetivo de concluir o curso. Obrigado Mariana, Priscilla, Rafael e Rafaela. Sumário Lista de Figuras 6 Lista de Tabelas 10 1 Objetivo Geral 11 2 Objetivos Especícos 12 3 Justicativa 13 4 Linguagens de programação 14 4.1 Paradigma . 14 4.1.1 Programação funcional . 14 4.1.2 Programação estruturada . 15 4.1.3 Programação orientada a objetos . 15 4.1.4 Programação lógica . 18 4.1.5 Programação imperativa . 18 4.2 Estrutura de Tipos . 19 4.2.1 Fortemente Tipada . 19 4.2.2 Dinamicamente Tipada . 19 4.3 Grau de abstração . 19 4.3.1 Linguagem de programação de baixo nível . 19 4.3.2 Linguagem de programação de alto nível . 19 4.4 Modelo de execução . 20 4.4.1 Linguagem de programação compiladas . 20 4.4.2 Linguagem de programação interpretadas . 20 4.4.3 Linguagens de Script . 20 5 Compiladores 24 5.1 Análise . 25 5.2 Síntese . 26 5.3 Análise Léxica . 26 5.4 Análise Sintática . 28 5.5 Análise Semântica . 29 5.6 Geração de Código Intermediário . 30 5.7 Otimização de Código . 30 5.8 Geração de Código . 30 6 Interpretadores 31 7 Ruby 35 8 Metodologia 42 8.1 Saber o que está sendo medido . 42 8.2 Medir a coisa certa . 43 8.3 Saber como as opções se combinam . 43 8.4 Sistemas pessoais contra sistemas de tempo compartilhado . 44 8.5 Medir com o hardware em todas as condições . 44 9 Ferramentas 45 9.1 RVM - Ruby Version Manager . 45 9.2 time . 47 9.3 ps ........................................ 48 9.4 JRuby . 50 4 9.5 Ruby Enterprise Edition . 50 9.6 Ruby MRI 1.8.6 . 50 9.7 Ruby MRI 1.8.7 . 51 9.8 Ruby MRI 1.9.1 . 51 10 Desenvolvimento 52 10.1 Contexto . 52 10.2 Ambiente . 53 11 Testes 55 11.1 Tarai . 56 11.2 Tak . 62 11.3 CTak . 70 11.4 Escrita em arquivos . 79 11.5 Leitura de arquivos . 86 12 Conclusão 93 5 Lista de Figuras 5.1 Um compilador - baseado no exemplo do livro Alfred V. Aho and Ullman [1986] . 26 5.2 Um interpretador - baseado no exemplo do livro Alfred V. Aho and Ullman [1986] . 26 7.1 Linguagens de programação ancestrais . 36 11.1 Algoritmo Tarai - Média do Tempo real (milisegundos) por Média da Me- mória RAM utilizada (kilobytes) . 59 11.2 Algoritmo Tarai - Média do Tempo do usuário (milisegundos) por Média da Memória RAM utilizada (kilobytes) . 59 11.3 Algoritmo Tarai - Média do Tempo do sistema (milisegundos) por Média da Memória RAM utilizada (kilobytes) . 60 11.4 Algoritmo Tarai - Linha do tempo do uso de memória RAM pelo JRuby em kilobytes. 60 11.5 Algoritmo Tarai - Linha do tempo do uso de memória RAM pelo Ruby Enterprise Edition em kilobytes. 61 11.6 Algoritmo Tarai - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.8.6 em kilobytes. 61 11.7 Algoritmo Tarai - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.8.7 em kilobytes. 62 11.8 Algoritmo Tarai - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.9.1 em kilobytes. 62 11.9 Algoritmo Tak - Média do Tempo real (milisegundos) por Média da Me- mória RAM utilizada (kilobytes) sem a presença do JRuby no gráco . 66 11.10Algoritmo Tak - Média do Tempo do usuário (milisegundos) por Média da Memória RAM utilizada (kilobytes) sem a presença do JRuby no gráco . 66 11.11Algoritmo Tak - Média do Tempo do sistema (milisegundos) por Média da Memória RAM utilizada (kilobytes) sem a presença do JRuby no gráco . 67 11.12Algoritmo Tak - Média do Tempo real (milisegundos) por Média da Me- mória RAM utilizada (kilobytes) . 67 11.13Algoritmo Tak - Média do Tempo do usuário (milisegundos) por Média da Memória RAM utilizada (kilobytes) . 68 11.14Algoritmo Tak - Média do Tempo do sistema (milisegundos) por Média da Memória RAM utilizada (kilobytes) . 68 11.15Algoritmo Tak - Linha do tempo do uso de memória RAM pelo JRuby em kilobytes . 69 11.16Algoritmo Tak - Linha do tempo do uso de memória RAM pelo Ruby Enterprise Edition em kilobytes . 69 11.17Algoritmo Tak - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.8.6 em kilobytes . 70 11.18Algoritmo Tak - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.8.7 em kilobytes . 70 11.19Algoritmo Tak - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.9.1 em kilobytes . 71 11.20Algoritmo CTak - Média do Tempo real (milisegundos) por Média da Me- mória RAM utilizada (kilobytes) sem a presença do JRuby no gráco . 75 11.21Algoritmo CTak - Média do Tempo do usuário (milisegundos) por Média da Memória RAM utilizada (kilobytes) sem a presença do JRuby no gráco 75 11.22Algoritmo CTak - Média do Tempo do sistema (milisegundos) por Média da Memória RAM utilizada (kilobytes) sem a presença do JRuby no gráco 76 11.23Algoritmo CTak - Média do Tempo real (milisegundos) por Média da Me- mória RAM utilizada (kilobytes) . 76 11.24Algoritmo CTak - Média do Tempo do usuário (milisegundos) por Média da Memória RAM utilizada (kilobytes) . 77 7 11.25Algoritmo CTak - Média do Tempo do sistema (milisegundos) por Média da Memória RAM utilizada (kilobytes) . 77 11.26Algoritmo CTak - Linha do tempo do uso de memória RAM pelo JRuby em kilobytes . 78 11.27Algoritmo CTak - Linha do tempo do uso de memória RAM pelo Ruby Enterprise Edition em kilobytes . 78 11.28Algoritmo CTak - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.8.6 em kilobytes . 79 11.29Algoritmo CTak - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.8.7 em kilobytes . 79 11.30Algoritmo CTak - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.9.1 em kilobytes . 80 11.31Algoritmo de escrita em arquivos - Média do Tempo real (milisegundos) por Média da Memória RAM utilizada (kilobytes) . 83 11.32Algoritmo de escrita em arquivos - Média do Tempo do usuário (milisegun- dos) por Média da Memória RAM utilizada (kilobytes) . 83 11.33Algoritmo de escrita em arquivos - Média do Tempo do sistema (milise- gundos) por Média da Memória RAM utilizada (kilobytes) . 84 11.34Algoritmo de escrita em arquivos - Linha do tempo do uso de memória RAM pelo JRuby em kilobytes . 84 11.35Algoritmo de escrita em arquivos - Linha do tempo do uso de memória RAM pelo Ruby Enterprise Edition em kilobytes . 85 11.36Algoritmo de escrita em arquivos - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.8.6 em kilobytes . 85 11.37Algoritmo de escrita em arquivos - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.8.7 em kilobytes . 86 11.38Algoritmo de escrita em arquivos - Linha do tempo do uso de memória RAM pelo Ruby MRI 1.9.1 em kilobytes . 86 11.39Algoritmo de leitura de arquivos - Média do Tempo real (milisegundos) por Média da Memória RAM utilizada (kilobytes) . 89 8 11.40Algoritmo de leitura de arquivos - Média do Tempo do usuário (milisegun- dos) por Média da Memória RAM utilizada (kilobytes) . 90 11.41Algoritmo de leitura de arquivos - Média do Tempo do sistema (milisegun- dos) por Média da Memória RAM utilizada (kilobytes) . 90 11.42Algoritmo de leitura de arquivos - Linha do tempo do uso de memória RAM pelo JRuby em kilobytes . 91 11.43Algoritmo de leitura de arquivos - Linha do tempo do uso de memória RAM pelo Ruby Enterprise Edition em kilobytes . 91 11.44Algoritmo de.
Recommended publications
  • Github Essentials.Pdf
    [ 1 ] GitHub Essentials Unleash the power of collaborative workflow development using GitHub, one step at a time Achilleas Pipinellis BIRMINGHAM - MUMBAI GitHub Essentials Copyright © 2015 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: September 2015 Production reference: 1280915 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78355-371-6 www.packtpub.com Credits Author Copy Editor Achilleas Pipinellis Trishya Hajare Reviewer Project Coordinator Umesh Ram Sharma Shweta H Birwatkar Commissioning Editor Proofreader Dipika Gaonkar Safis Editng Acquisition Editor Indexer Nikhil Karkal Hemangini Bari Content Development Editor Production Coordinator Sumeet Sawant Nitesh Thakur Technical Editor Cover Work Saurabh Malhotra Nitesh Thakur About the Author Achilleas Pipinellis is an open source enthusiast and tries to get involved in as many projects as possible.
    [Show full text]
  • Michael Johann Mjohann@Rails­Experts.Com
    Steinfurt, Germany Michael Johann mjohann@rails­experts.com http://www.rails­experts.com I am interested in new projects where various modern technologies are combined to build great innovative products. My view is from the full stack developer to architecture and engineering aspects. I am also passionate about being a CTO if the company is trusting my technical experience. I've supported the most known industry standards before thy became mainstream. I've founded JavaSPEKTRUM print magazine in 1996 and RailsWayMagazine (print) in 2009 and have been editor in chief for both magazines. In 2008 I wrote a german book about "JRuby on Rails for Java Enterprise Developers). As a regular speaker at conferences in Europe/USA, I always spread the news about new technologies and how they apply to projects. As a person with multiple interests I combine using technical aspects in development with writing and speaking at conferences. I've been an evangelist for Java and Rails. Technical Skills Like: ruby, on, rails, ios, android, java, jee, html5, css3, javascript, mongodb, torquebox, ansible, docker, rspec, cucumber Dislike: php, typo3, cobol Experience Chief Full Stack Developer – Smaps GmbH December 2013 ­ Current ruby­on­rails­4.1, objective­c, mongodb, android Responsible for product development of backend, frontend and mobile clients Backend consists of MongoDB Frontend is HTML5 with Bootstrap, JQuery, GoogleMaps API iOS Client native with RestKit API communication Android native (Java) Interims CTO – Eco Novum GmbH 2012 ­ November 2013 ios, mongodb, jrubyonrails, html5, css3, javascript, chef, git, jira, json Responsible for all architectural and technological aspects of the products (several mobile payment solutions).
    [Show full text]
  • Aplikacija Za Pregled Tehnologij Spletnih Projektov Na Podlagi Avtomatske Analize Repozitorijev
    Univerza v Ljubljani Fakulteta za računalništvo in informatiko Aljana Polanc Aplikacija za pregled tehnologij spletnih projektov na podlagi avtomatske analize repozitorijev DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA Mentor: doc. dr. Aleš Smrdel Ljubljana, 2016 Rezultati diplomskega dela so intelektualna lastnina avtorja in Fakultete za računalništvo in informatiko Univerze v Ljubljani. Za objavljanje ali iz- koriščanje rezultatov diplomskega dela je potrebno pisno soglasje avtorja, Fakultete za računalništvo in informatiko ter mentorja. Besedilo je oblikovano z urejevalnikom besedil LATEX. Fakulteta za računalništvo in informatiko izdaja naslednjo nalogo: Tematika naloge: V okviru diplomskega dela razvijte aplikacijo, ki bo služila za vzdrževanje ažurne evidence o tehnologijah pri različnih spletnih projektih. Aplikacija mora omogočiti avtomatsko periodično pregledovanje vseh aktivnih projek- tov znotraj nekega podjetja in posodabljanje podatkov o uporabljenih teh- nologijah za vsakega izmed projektov. V ta namen najprej analizirajte teh- nologije, ki se uporabljajo pri izdelavi sodobnih spletnih projektov, nato pa realizirajte aplikacijo, ki se mora biti sposobna povezati z repozitorijem pro- jektov, prebrati vse projekte in na podlagi analize datotek projektov razbrati tehnologije, ki so uporabljene pri posameznem projektu. Za vsak projekt mora aplikacija razbrati uporabljene programske jezike, orodja, knjižnice ter razvijalce, ki sodelujejo pri posameznem projektu. Razvijte tudi spletni vme- snik, ki bo omogočal prikaz podatkov o projektih in tehnologijah znotraj ne- kega podjetja ter nadroben prikaz tehnologij uporabljenih pri posameznem projektu. Razvijte tudi administrativni spletni vmesnik, ki bo omogočal do- polnjevanje in popravljanje avtomatsko pridobljenih podatkov. Pri razvoju aplikacije izberite najprimernejše tehnologije na strani odjemalca in na strani strežnika. Uspešnost delovanja razvite aplikacije testirajte na nekem repozi- toriju projektov.
    [Show full text]
  • Supporting C Extensions for Dynamic Languages an Abbreviated Version of [10]
    High-Performance Language Composition: Supporting C Extensions for Dynamic Languages An abbreviated version of [10]. Grimmer Matthias1, Chris Seaton2, Thomas W¨urthinger2 and Hanspeter M¨ossenb¨ock1 1 Johannes Kepler University, Linz, Austria fgrimmer,[email protected] 2 Oracle Labs fchris.seaton,[email protected] Abstract. Many dynamic languages such as Ruby offer functionality for writing parts of applications in a lower-level language such as C. These C extension modules are usually written against the API of an interpreter, which provides access to the higher-level language's internal data struc- tures. Alternative implementations of the high-level languages often do not support such C extensions because implementing the same API as in the original implementations is complicated and limits performance. In this paper we describe a novel approach for modular composition of languages that allows dynamic languages to support C extensions through interpretation. We propose a flexible and reusable cross-language mechanism that allows composing multiple language interpreters. This mechanism allows us to efficiently exchange runtime data across different interpreters and also enables the dynamic compiler of the host VM to inline and optimize programs across multiple language boundaries. We evaluate our approach by composing a Ruby interpreter with a C interpreter. We run existing Ruby C extensions and show how our system executes combined Ruby and C modules on average over 3× faster than the conventional implementation of Ruby with native C extensions. 1 Introduction Most programming languages offer functionality for calling routines in modules that are written in another language. There are multiple reasons why program- mers want to do this, including to run modules already written in another lan- guage, to achieve higher performance than is normally possible in the primary language, or generally to allow different parts of the system to be written in the most appropriate language.
    [Show full text]
  • Ruby on Rails™ Tutorial: Learn Web Developments with Rails
    ptg8286261 www.it-ebooks.info Praise for Michael Hartl’s Books and Videos on Ruby on RailsTM ‘‘My former company (CD Baby) was one of the first to loudly switch to Ruby on ptg8286261 Rails, and then even more loudly switch back to PHP (Google me to read about the drama). This book by Michael Hartl came so highly recommended that I had to try it, and the Ruby on RailsTM Tutorial is what I used to switch back to Rails again.’’ —From the Foreword by Derek Sivers (sivers.org) Formerly: Founder, CD Baby Currently: Founder, Thoughts Ltd. ‘‘Michael Hartl’s Rails Tutorial book is the #1 (and only, in my opinion) place to start when it comes to books about learning Rails. It’s an amazing piece of work and, unusually, walks you through building a Rails app from start to finish with testing. If you want to read just one book and feel like a Rails master by the end of it, pick the Ruby on RailsTM Tutorial.’’ —Peter Cooper Editor, Ruby Inside www.it-ebooks.info ‘‘Grounded in the real world.’’ —I Programmer (www.i-programmer.info), by Ian Elliot ‘‘The book gives you the theory and practice, while the videos focus on showing you in person how its done. Highly recommended combo.’’ —Antonio Cangiano, Software Engineer, IBM ‘‘The author is clearly an expert at the Ruby language and the Rails framework, but more than that, he is a working software engineer who introduces best practices throughout the text.’’ —Greg Charles, Senior Software Developer, Fairway Technologies ‘‘Overall, these video tutorials should be a great resource for anyone new to Rails.’’ —Michael Morin, ruby.about.com ‘‘Hands-down, I would recommend this book to anyone wanting to get into Ruby on Rails development.’’ —Michael Crump, Microsoft MVP ptg8286261 www.it-ebooks.info RUBY ON RAILSTM TUTORIAL Second Edition ptg8286261 www.it-ebooks.info Visit informit.com/ruby for a complete list of available products.
    [Show full text]
  • Deploying with Jruby Is the Definitive Text on Getting Jruby Applications up and Running
    Early Praise for Deploying JRuby Deploying with JRuby is the definitive text on getting JRuby applications up and running. Joe has pulled together a great collection of deployment knowledge, and the JRuby story is much stronger as a result. ➤ Charles Oliver Nutter JRuby Core team member and coauthor, Using JRuby Deploying with JRuby answers all of the most frequently asked questions regarding real-world use of JRuby that I have seen, including many we were not able to answer in Using JRuby. Whether you’re coming to JRuby from Ruby or Java, Joe fills in all the gaps you’ll need to deploy JRuby with confidence. ➤ Nick Sieger JRuby Core team member and coauthor, Using JRuby This book is an excellent guide to navigating the various JRuby deployment op- tions. Joe is fair in his assessment of these technologies and describes a clear path for getting your Ruby application up and running on the JVM. ➤ Bob McWhirter TorqueBox team lead at Red Hat Essential reading to learn not only how to deploy web applications on JRuby but also why. ➤ David Calavera Creator of Trinidad Deploying with JRuby is a must-read for anyone interested in production JRuby deployments. The book walks through the major deployment strategies by providing easy-to-follow examples that help the reader take full advantage of the JRuby servers while avoiding the common pitfalls of migrating an application to JRuby. ➤ Ben Browning TorqueBox developer at Red Hat Deploying with JRuby is an invaluable resource for anyone planning on using JRuby for web-based development. For those who have never used JRuby, Joe clearly presents its many advantages and few disadvantages in comparison to MRI.
    [Show full text]
  • High Availability Framework for Mix-Cloud Secure Applications
    PETR BELYAEV HIGH AVAILABILITY FRAMEWORK FOR MIX-CLOUD SE- CURE APPLICATIONS Master of Science thesis Examiners: Prof. Jose Luis Martinez Lastra, Dr. Andrei Lobov Examiners and topic approved by the Faculty Council of the Faculty of Automation and Science Engineering on 6th April 2016 i ABSTRACT PETR BELYAEV: High Availability Framework for Mix-Cloud Secure Applications Tampere University of Technology Master of Science thesis, 53 pages, 6 Appendix pages November 2016 Master's Degree Programme in Automation Technology Major: Factory Automation and Industrial Informatics Examiners: Prof. Jose Luis Martinez Lastra, Dr. Andrei Lobov Keywords: High Availability, clustering, cloud Having one of the services, such as web applications, databases or telephony systems, unavailable because of a single server failure is very annoying, yet very common issue, especially if the service is deployed on-premises. The simplest way to address it is to introduce redundancy to the system. But in this case the amount of physical machines needed will raise, while their eciency will drop as most of the services do not use 100% of machine's capabilities. The better way to solve the service availability issue is to logically separate the service from the underlying hardware, balancing the load between instances and migrating them between the physical machines in case of failure. This way is much more eective, but it also contains a number of challenges, such as conguration diculty and inter-service request routing. The High Availability (HA) framework discussed in this thesis was designed to miti- gate those issues. The key goal solved by the HA framework is raising the scalability and reliability of the service while keeping the conguration as simple as possible.
    [Show full text]
  • Specialising Dynamic Techniques for Implementing the Ruby Programming Language
    SPECIALISING DYNAMIC TECHNIQUES FOR IMPLEMENTING THE RUBY PROGRAMMING LANGUAGE A thesis submitted to the University of Manchester for the degree of Doctor of Philosophy in the Faculty of Engineering and Physical Sciences 2015 By Chris Seaton School of Computer Science This published copy of the thesis contains a couple of minor typographical corrections from the version deposited in the University of Manchester Library. [email protected] chrisseaton.com/phd 2 Contents List of Listings7 List of Tables9 List of Figures 11 Abstract 15 Declaration 17 Copyright 19 Acknowledgements 21 1 Introduction 23 1.1 Dynamic Programming Languages.................. 23 1.2 Idiomatic Ruby............................ 25 1.3 Research Questions.......................... 27 1.4 Implementation Work......................... 27 1.5 Contributions............................. 28 1.6 Publications.............................. 29 1.7 Thesis Structure............................ 31 2 Characteristics of Dynamic Languages 35 2.1 Ruby.................................. 35 2.2 Ruby on Rails............................. 36 2.3 Case Study: Idiomatic Ruby..................... 37 2.4 Summary............................... 49 3 3 Implementation of Dynamic Languages 51 3.1 Foundational Techniques....................... 51 3.2 Applied Techniques.......................... 59 3.3 Implementations of Ruby....................... 65 3.4 Parallelism and Concurrency..................... 72 3.5 Summary............................... 73 4 Evaluation Methodology 75 4.1 Evaluation Philosophy
    [Show full text]
  • Lightweight Method Dispatch On
    Lightweight Method Dispatch on MRI Koichi Sasada <[email protected]> EURUKO2015 Koichi Sasada A programmer from Japan Koichi is a Programmer •MRI committer since 2007/01 • Original YARV developer since 2004/01 • YARV: Yet Another RubyVM • Introduced into Ruby (MRI) 1.9.0 and later • Generational/incremental GC for 2.x “Why I wouldn’t use rails for a new company” by Jared Friedman “The ruby interpreter is just a volunteer effort. Between 2007- 2012, there were a number of efforts to fix the interpreter and make it fast (Rubinius, Jruby, YARV, etc) But lacking backers with staying power, the volunteers got bored and some of the efforts withered. JRuby is still active and recent versions are showing more promise with performance, but it’s been a long road.” Quoted from http://blog.jaredfriedman.com/2015/09/15/why-i- wouldnt-use-rails-for-a-new-company/ (September 15, 2015) Koichi is an Employee Koichi is a member of Heroku Matz team Mission Design Ruby language and improve quality of MRI Heroku employs three full time Ruby core developers in Japan named “Matz team” Heroku Matz team Matz Designer/director of Ruby Nobu Quite active committer Ko1 Internal Hacker Matz Title collector • He has so many (job) title • Japanese teacher • Chairman - Ruby Association • Fellow - NaCl • Chief architect, Ruby - Heroku • Research institute fellow – Rakuten • Chairman – NPO mruby Forum • Senior researcher – Kadokawa Ascii Research Lab • Visiting professor – Shimane University • Honorable citizen (living) – Matsue city • Honorable member – Nihon Ruby no Kai
    [Show full text]
  • Load Testing of Containerised Web Services
    UPTEC IT 16003 Examensarbete 30 hp Mars 2016 Load Testing of Containerised Web Services Christoffer Hamberg Abstract Load Testing of Containerised Web Services Christoffer Hamberg Teknisk- naturvetenskaplig fakultet UTH-enheten Load testing web services requires a great deal of environment configuration and setup. Besöksadress: This is especially apparent in an environment Ångströmlaboratoriet Lägerhyddsvägen 1 where virtualisation by containerisation is Hus 4, Plan 0 used with many moving and volatile parts. However, containerisation tools like Docker Postadress: offer several properties, such as; application Box 536 751 21 Uppsala image creation and distribution, network interconnectivity and application isolation that Telefon: could be used to support the load testing 018 – 471 30 03 process. Telefax: 018 – 471 30 00 In this thesis, a tool named Bencher, which goal is to aid the process of load testing Hemsida: containerised (with Docker) HTTP services, is http://www.teknat.uu.se/student designed and implemented. To reach its goal Bencher automates some of the tedious steps of load testing, including connecting and scaling containers, collecting system metrics and load testing results to name a few. Bencher’s usability is verified by testing a number of hypotheses formed around different architecture characteristics of web servers in the programming language Ruby. With a minimal environment setup cost and a rapid test iteration process, Bencher proved its usability by being successfully used to verify the hypotheses in this thesis. However, there is still need for future work and improvements, including for example functionality for measuring network bandwidth and latency, that could be added to enhance process even further. To conclude, Bencher fulfilled its goal and scope that were set for it in this thesis.
    [Show full text]
  • Inter-Language Collaboration in an Object-Oriented Virtual Machine Bachelor’S Thesis
    Inter-language Collaboration in an Object-oriented Virtual Machine Bachelor’s Thesis MATTHIAS SPRINGER, Hasso Plattner Institute, University of Potsdam TIM FELGENTREFF, Hasso Plattner Institute, University of Potsdam (Supervisor) TOBIAS PAPE, Hasso Plattner Institute, University of Potsdam (Supervisor) ROBERT HIRSCHFELD, Hasso Plattner Institute, University of Potsdam (Supervisor) Multi-language virtual machines have a number of advantages. They allow software developers to use soft- ware libraries that were written for different programming languages. Furthermore, language implementors do not have to bother with low-level VM functionality and their implementation can benefit from optimiza- tions in existing virtual machines. MagLev is an implementation of the Ruby programming language on top of the GemStone/S virtual machine for the Smalltalk programming language. In this work, we present how software components written in both languages can interact. We show how MagLev unifies the Smalltalk and the Ruby object model, taking into account Smalltalk meta classes, Ruby singleton classes, and Ruby modules. Besides, we show how we can call Ruby methods from Smalltalk and vice versa. We also present MagLev’s concept of bridge methods for implementing Ruby method calling conventions. Finally, we compare our solution to other language implementations and virtual machines. Additional Key Words and Phrases: Virtual Machines, Ruby, Smalltalk, MagLev, Language Implementation 1. MULTI-LANGUAGE VIRTUAL MACHINES Multi-language virtual machines are virtual machines that support the execution of source code written in multiple languages. According to Vraný [Vraný 2010], we have to distinguish multi-lanuguage virtual machines from interpreters and native code execution. Languages inside multi-language virtual machines are usually compiled to byte code and share the same object space.
    [Show full text]
  • Ruby Programming
    Ruby Programming Wikibooks.org December 1, 2012 On the 28th of April 2012 the contents of the English as well as German Wikibooks and Wikipedia projects were licensed under Creative Commons Attribution-ShareAlike 3.0 Unported license. An URI to this license is given in the list of figures on page 249. If this document is a derived work from the contents of one of these projects and the content was still licensed by the project under this license at the time of derivation this document has to be licensed under the same, a similar or a compatible license, as stated in section 4b of the license. The list of contributors is included in chapter Contributors on page 243. The licenses GPL, LGPL and GFDL are included in chapter Licenses on page 253, since this book and/or parts of it may or may not be licensed under one or more of these licenses, and thus require inclusion of these licenses. The licenses of the figures are given in the list of figures on page 249. This PDF was generated by the LATEX typesetting software. The LATEX source code is included as an attachment (source.7z.txt) in this PDF file. To extract the source from the PDF file, we recommend the use of http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ utility or clicking the paper clip attachment symbol on the lower left of your PDF Viewer, selecting Save Attachment. After extracting it from the PDF file you have to rename it to source.7z. To uncompress the resulting archive we recommend the use of http://www.7-zip.org/.
    [Show full text]