Pull to refresh

Comments 40

Как раз хотел разобраться в теме.
В очередной раз убедился в универсальности Ruby.
Спасибо за статью, с нетерпением буду ждать следующую часть.
Круто! Даже появилось желание попрогать на руби! )
Тест аналогичного куска на Perl/Python/PHP в студию!

PS Perl тоже умеет использовать Си…
>Тест аналогичного куска на Perl/Python/PHP в студию!
Скорость сравнить? Я исходники дал, можете попробовать. Эта статья подразумевалась не как бенчмарк, а как описание методики.
>Perl тоже умеет использовать Си
Да, эта библиотека(RubyInline) как раз из мира Perl пришла, о чем на ее сайте и сказано.
За описание методики спасибо, но хотелось бы и кусочек бенчмарка посмотреть — у меня руби нет :)
Ок, возможно потом оформлю отдельным постом.
define('TIME', microtime(true));
class Factor {
public static function factorization($num, $show = FALSE) {
$numl = $num;
$n = 2;
while (pow($n, 2) <= $numl) {
if ($num % $n == 0) {
$num = $num / $n;
if ($show) echo $n.'<BR />';
} else $n += 1;
}
}
}
Factor::factorization(999999);
printf("%.5f", microtime(true) — TIME, 5);

Время: 0.00086
Система: винда ХП, пень 4 (нортвуд, 3.2Ггц, 512кб кэша), 2 гига оперативки
На тысячу помножить еще забыли:)
В топике — 1000 раз в цикле.
Действительно, тогда в среднем будет 0.88с
Что-то у вас все равно медленно. Я сейчас как раз по заявкам читателей делаю бенчмарки:)
И PHP у меня в разы быстрее срабатывает чем у вас, хотя машинка послабее.
Но могу сказать что Ruby 1.9(в топике 1.8.6) вроде быстрее PHP:)
Какая у вас машина? У меня комп 6-летней давности с засранной виндой.
ivs@debian:~$ uname -a
Linux debian 2.6.26-1-686 #1 SMP Mon Dec 15 18:15:07 UTC 2008 i686 GNU/Linux
ivs@debian:~$ cat /proc/cpuinfo | grep "model name"
model name : Intel® Pentium® D CPU 2.80GHz
model name : Intel® Pentium® D CPU 2.80GHz
ivs@debian:~$ php -v
PHP 5.2.6-0.1~lenny1 with Suhosin-Patch 0.9.6.2 (cli) (built: Nov 29 2008 21:35:12)
Copyright © 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright © 1998-2008 Zend Technologies
На самом деле у вас помощнее…
очень жду бенчмаков :)
А, ну правильно, у меня двухядерный. На частоту посмотрел, подумалось что у вас быстрее:)
UFO just landed and posted this here
шикарная фича.
беру на вооружение
UFO just landed and posted this here
Для написания расширений в Ruby есть C API. Про это — в следующей части:)
UFO just landed and posted this here
Как и практически все динамические языки, которые я знаю:)
да, напишите плиз про C API. а то я уже замучался с lua (а питон как-то не катит)
У меня по плану — 3 части. Первая эта, затем про С расширения для Ruby, а третья как раз про встраивание Ruby.
Сразу скажу, по личному впечатлению со встроенным Ruby приятнее в C работать чем с Lua:)
Так что ждите следующих частей:)
UFO just landed and posted this here
Ага, на maxidoors.ru/ читал, только у вас про сборку, а я планирую про само написание.
Кстати, почему блог забросили? Интересно было читать.
UFO just landed and posted this here
>Не, у меня и про написание было.
Точно, старые архивы полистал — много информации. Спасибо, почитаю.
Прямо-таки неделя руби на лоре хабре.
А за пост большое спасибо.
а по-моему скорее неделя «резиновой» верстки…
точку с запятой после return «Hi from C!:)», не компилится
Точно. Спасибо, исправил.
Очень круто. Написано кратко и понятно, пример подобран простой и по делу. Не дошли руки ещё до этого аспекта Ruby, так что ваша статья очень в тему.
Спасибо! Ждём продолжения.
Кстати, таким образом можно использовать только C или C++ тоже?
Вопрос задаю исключительно из интереса: в плане повышения производительности инлайновыми вставками, очевидно, имеет смысл использовать только С.
C++ также можно использовать. Подробнее можно в документации посмотреть(ссылка в топике).
Притом также можно использовать и Fortran:) И есть возможность добавлять собственные языки.
Есть еще более интересный способ использовать Си и собственно не только его:
FFI ( Foregin Function Interface )

Вот пример прямо из докуменации:

require 'ffi'

module GetPid
extend FFI::Library

attach_function :getpid, [], :uint
end

puts GetPid.getpid

Правда ведь удивительно красиво?

blog.headius.com/2008/10/ffi-for-ruby-now-available.html
да не сильно. зависимость от этого процесса (!)работающего прикручивается :(
Sign up to leave a comment.

Articles