Mar 07, 2008 01:01
Мою реализацию rev_comp включили в Shootout. Ура. Было:
N CPU Time secs Memory Use KB GZip Bytes
2,500,000 34.88 323,056 436
Стало:
N CPU Time secs Memory Use KB GZip Bytes
2,500,000 31.46 193,204 541
Ускорение на 10 процентов. Что, в принципе - полная фигня, и не имеет значения - все равно ужасно медленно.
Но - я уже придумал, как ее ускорить как следует. Причем - тупо и прямолинейно. На выходных сделаю.
_________________
update1:
Ускорить нихрена не вышло. Несколько процентов ускорения, меньше пяти. Идея была в том, чтобы заменить вызов функции, транслирующей символы через pattern-matching, на lookup по массиву (туплу). На удивление - дало мизерное ускорение, не стоит реализации. Основное время тратится где-то еще. И с этим "еще" (что наверняка стандартный ввод/вывод) ничего поделать нельзя. Эрланг патологически тормозит при работе со стандартным вводом/выводом, на чем основанны многие тесты shootout - файловый несложно сделать быстрым.
Поэтому, не доверяйте тестам shootout в случае Эрланга. Он гораздо быстрее, чем в этих тестах.
update2:
Перепишу-ка я этот тест, чтобы он работал с файловым вводом-выводом, а не со стандартным. Причем - используя свою быструю библиотеку потоков ввода/вывода (которая станет еще быстрее при реализации EEP9). Вот тогда и посмотрим, кто кого. Понятное дело, что в Shootout это не пойдет, зато покажет наглядно, насколько Эрланг соотносится с другими языками и насколько Shootout объективен в случае Эрланга.
_________________
Кстати, приняли Erlang Enhancement Proposal для BIF регулярных выражений и функций поиска на Binaries. Что открывает фантастические просторы для оптимизаций тестов Shootout - а именно, Эрланг сильно подвинется в рейтинге вверх. И тогда, я надеюсь, я допишу свою библиотеку ввода-вывода - он также станет турбореактивным (пока что тормозит чтение текстовых файлов), и сделаю contribution, если допишу. После чего можно будет заключить, что у Эрланга осталось лишь одно выраженное слабое место - это работа с массивами.
erlang,
тесты,
Эрланг