Комментарии 40
Как раз хотел разобраться в теме.
+1
В очередной раз убедился в универсальности Ruby.
Спасибо за статью, с нетерпением буду ждать следующую часть.
Спасибо за статью, с нетерпением буду ждать следующую часть.
+1
Круто! Даже появилось желание попрогать на руби! )
0
Тест аналогичного куска на Perl/Python/PHP в студию!
PS Perl тоже умеет использовать Си…
PS Perl тоже умеет использовать Си…
0
>Тест аналогичного куска на Perl/Python/PHP в студию!
Скорость сравнить? Я исходники дал, можете попробовать. Эта статья подразумевалась не как бенчмарк, а как описание методики.
>Perl тоже умеет использовать Си
Да, эта библиотека(RubyInline) как раз из мира Perl пришла, о чем на ее сайте и сказано.
Скорость сравнить? Я исходники дал, можете попробовать. Эта статья подразумевалась не как бенчмарк, а как описание методики.
>Perl тоже умеет использовать Си
Да, эта библиотека(RubyInline) как раз из мира Perl пришла, о чем на ее сайте и сказано.
+1
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 гига оперативки
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 гига оперативки
0
На тысячу помножить еще забыли:)
В топике — 1000 раз в цикле.
В топике — 1000 раз в цикле.
+1
Действительно, тогда в среднем будет 0.88с
0
Что-то у вас все равно медленно. Я сейчас как раз по заявкам читателей делаю бенчмарки:)
И PHP у меня в разы быстрее срабатывает чем у вас, хотя машинка послабее.
Но могу сказать что Ruby 1.9(в топике 1.8.6) вроде быстрее PHP:)
И PHP у меня в разы быстрее срабатывает чем у вас, хотя машинка послабее.
Но могу сказать что Ruby 1.9(в топике 1.8.6) вроде быстрее PHP:)
0
Какая у вас машина? У меня комп 6-летней давности с засранной виндой.
0
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
0
На самом деле у вас помощнее…
очень жду бенчмаков :)
очень жду бенчмаков :)
0
А, ну правильно, у меня двухядерный. На частоту посмотрел, подумалось что у вас быстрее:)
0
>очень жду бенчмаков :)
Готово: iv_s.habrahabr.ru/blog/48952/
Готово: iv_s.habrahabr.ru/blog/48952/
+1
>Тест аналогичного куска на Perl/Python/PHP в студию!
Готово: iv_s.habrahabr.ru/blog/48952/
Готово: iv_s.habrahabr.ru/blog/48952/
0
НЛО прилетело и опубликовало эту надпись здесь
шикарная фича.
беру на вооружение
беру на вооружение
0
НЛО прилетело и опубликовало эту надпись здесь
Для написания расширений в Ruby есть C API. Про это — в следующей части:)
0
НЛО прилетело и опубликовало эту надпись здесь
да, напишите плиз про C API. а то я уже замучался с lua (а питон как-то не катит)
0
У меня по плану — 3 части. Первая эта, затем про С расширения для Ruby, а третья как раз про встраивание Ruby.
Сразу скажу, по личному впечатлению со встроенным Ruby приятнее в C работать чем с Lua:)
Так что ждите следующих частей:)
Сразу скажу, по личному впечатлению со встроенным Ruby приятнее в C работать чем с Lua:)
Так что ждите следующих частей:)
+3
НЛО прилетело и опубликовало эту надпись здесь
Ага, на maxidoors.ru/ читал, только у вас про сборку, а я планирую про само написание.
Кстати, почему блог забросили? Интересно было читать.
Кстати, почему блог забросили? Интересно было читать.
0
полезно!
0
Прямо-таки неделя руби на лоре хабре.
А за пост большое спасибо.
А за пост большое спасибо.
+2
точку с запятой после return «Hi from C!:)», не компилится
0
Даешь Руби в массы! ;)
0
Очень круто. Написано кратко и понятно, пример подобран простой и по делу. Не дошли руки ещё до этого аспекта Ruby, так что ваша статья очень в тему.
Спасибо! Ждём продолжения.
Спасибо! Ждём продолжения.
0
Кстати, таким образом можно использовать только C или C++ тоже?
Вопрос задаю исключительно из интереса: в плане повышения производительности инлайновыми вставками, очевидно, имеет смысл использовать только С.
Вопрос задаю исключительно из интереса: в плане повышения производительности инлайновыми вставками, очевидно, имеет смысл использовать только С.
0
Есть еще более интересный способ использовать Си и собственно не только его:
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
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
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Ruby и C. Часть 1.