Метка «rubinius»

в 13:29, , рубрики: rubinius, ruby, ruby on rails, метки: ,

image

Сегодня на официальном сайте проекта Rubinius появилась отличная новость о выходе версии 2.0 и о планах проекта на будущее. Rubinius — это альтернативная реализация исполняемой среды для языка Ruby, наряду с официальной MRI, JRuby и другими, менее известными разработками.
Читать полностью »

Многие Руби-разработчики игнорируют потоки (threads), хотя это очень полезный инструмент. В данной статье мы рассмотрим создание IO потоков в Руби и покажем как Руби справляется с потоками в которых происходит много вычислительных операций. Попробуем применить альтернативные имплементации Руби, а так же узнаем, каких результатов можно добиться при помощи модуля DRb. В конце статьи посмотрим, как эти принципы используются в различных серверах для аппликаций на Ruby on Rails.

IO потоки в Руби

Рассмотрим небольшой пример:

def call_remote(host)
  sleep 3 # симулируем долгий запрос к серверу
end

Если нам надо обратитьcя к двум серверам, например, чтобы очистить кэш, и мы дважды последовательно вызовем эту функцию:

call_remote 'host1/clear_caches'
call_remote 'host2/clear_caches'

то наша программа будет работать 6 секунд.

Мы можем ускорить исполнение программы, если будем использовать потоки, например, так:

threads = []

['host1', 'host2'].each do |host|
  threads << Thread.new do
    call_remote "#{host}/clear_caches"
  end
end

threads.each(&:join)

Мы создали два потока, в каждом потоке обратились к своему серверу и командами #join сказали, что главной программе (главному потоку) надо подождать их завершения. Теперь наша программа успешно выполняется в два раза быстрее, за 3 секунды.
Читать полностью »

Подкаст

http://ruby.rpod.ru/284727.html

Новости

Читать полностью »

Подкаст

http://ruby.rpod.ru/281312.html

Новости

Читать полностью »

Подкаст

http://ruby.rpod.ru/273046.html

Новости

Специальный гость

Леонид Никаноров

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js