[Ruby] несколько тестов
Alexander Bokovoy
a.bokovoy at sam-solutions.net
Fri Jan 31 17:43:17 MSK 2003
On Fri, Jan 31, 2003 at 04:00:52PM +0300, Vladimir V. Zdorovenco wrote:
> В письме от 31 Январь 2003 10:24 Alexander Bokovoy написал:
>
> > Даже запустив раз 20 подряд я получил устойчиво .09, что все равно больше,
> > чем в варианте Ruby.
> >
> > Справедливости ради, этот тест не является показательным ни для одного из
> > языков. Проблема адекватного тестирования стоит остро и до сих пор не
> > решена -- все программы тестирования позволяют выявить скорее поведение
> > "сферического" коня в вакууме, чем понять, какой же язык более применим в
> > конкретной задаче.
>
> Тэсты которыми я располагал, конечно ничего особого из себя не представляют и
> вобщем-то не являются поводом перехода к другому языку. Но вот руководствуясь
> например такими тестами как те на которые указал Вик Исмакаев (
> vic ismakaev: http://www.bagley.org/~doug/shootout/) или собственные
Эти тесты подвергаются критике многими программистами. Вне зависимости от
используемого ими языка. Проблема на самом деле серьезная -- без учета
конкретики задачи их результаты слабо анализируемы в нужном контексте.
К примеру, в Ruby работа с файлами реализуется чаще всего в транзакционном
стиле с применением итератора File#open. В такой реализации мы получаем
выигрыш по сравнению с другими языками, не имеющими соответствующей идиомы
(например, Perl) -- операции открытия файла, обработки и закрытия не
разрываются на кванты внутри виртуальной машины (квантуется только
обработка). Значит, например, в многопоточных программах на Ruby цикл
открыть-обработать-закрыть не будет прерван другим потоком на стадиях
открыть-обработать и обработать-закрыть соответственно. В определенных
ситуациях это достаточно серьезное требование.
> В крайнем случае можно дописать некий модуль например на C, способствующий
> этому а может улучшить что-то из ruby_lib. Второе это - может теже тэсты
> помогут мне выявить плохо сконструируемую мною же часть, о чем может быть я
> сам и недогадывался. Если тэст на C в значительной мере превышает аналогичный
> ему на ruby и причем в свете модулей для него, получим почти готовое решение.
Для этой задачи (поиск плохого кода) используется профилировщик. В Ruby он
входит в стандартную библиотеку.
--
/ Alexander Bokovoy
---
consultant, n.:
Someone who knowns 101 ways to make love, but can't get a date.
More information about the Ruby
mailing list