[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