Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Categories:

Загадка на ночь этап 2 - итоги

Обнаружил тут, что в прошлых тестах использовал файл, нечестно полученный трехкратным склеиванием "настоящего". Сейчас перетестирую на 1/3. Надо будет честный предельный файл с 6 млн строк раздобыть

Условие: дан CSV-файд 1.7 млн строк, 248МБ. Тест на непустоту проходят 1.1 млн строк, 34МБ ключей. Надо побить строки на поля через запятую, взять поля с индексами 4 и 15, слепить из них составной ключ и посчитать, сколько разных комбинаций.

FileCommit, MBCPU, s
intrusive.cpp643
csvreader-pypy.py1208 (!)
2-tokenize.js1208 (!)
2.pl13030
Some41-ht-ffi.hs16213
Some41-ffi.hs2018
a_tokenize.java2808
2.sh?21


Аутсайдеры (для истории):

FileCommit, MBCPU, s
2-arena-stdio.cpp803
2-cpp-arena-2.cpp808
2-getline.js12011
2.js12023
vsh-arena-ht.hs 19013
a-dirty.java28010
Some41-2.hs2609
Some41-3.hs2808
Some41-5.hs28018
Some41.hs58510


Мерял градусником, важен порядок величины (но при повторных запусках рез-ты не меняются). В-общем, 260/9 is good enough for production use, требования у меня уложиться в 5 мбайт/сек и 2 гб при задействовании 4 ядер, а здесь всего 1 ядро, которое, к тому же, медленнее, чем продакшен-процессоры. Памяти больше чем 2 гб, но она съедена другими компонентами.

Осталось что-нибудь из http://attractivechaos.wordpress.com/2008/08/28/comparison-of-hash-table-libraries/ через FFI прикрутить :-\ Ещё подсказывают http://judy.sourceforge.net/doc/JudySL_3x.htm

А вот специфичное для х-я: http://www.haskell.org/haskellwiki/Shootout/Knucleotide . Интересно, что на шутауте Хаскель по памяти проигрывает state of the art C++ безбожно (400 vs 130)

Upd: я тут ускорил ноуд, до 11s.

Теперь v8 обгоняет ghc, внезапно. Вариант с малым потреблением памяти, конечно. Учитывая что сделано через сплит - скорость такая же, как у варианта Java со split, что снова неожиданно. Делаю кастомный токенизатор.

Upd2: ускорил до 8с

Upd3: http://nponeccop.livejournal.com/305014.html - новый алгоритм с потенциалом чудовищно сократить память!

Upd4: Cтарый алгоритм, но хеш из буста - 64М. По времени тоже быстрее, если мерять точно павершеллом. И ещё один бенчмарк хеш-таблиц.
Tags: fp, haskell, programming
Subscribe

Recent Posts from This Journal

  • mercurial-server всё

    Так получилось, что я с незапамятных времён подсел на Меркуриал. Первый коммит аж в январе 2005, до выхода меркуриала, так как я старался…

  • Арче-виндострадания 2.1

    Я тут правил прошлый пост, но оно вышло из-под контроля, поэтому здесь сокращённая версия для меня того, что работает а что нет. EOL ветки: -…

  • Окончательное решение вопроса о долбоебах

    Технические предпосылки для популярности макос среди непрограммистов, так сказать. Обратите внимание на розовый квадратик.

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 172 comments

Recent Posts from This Journal

  • mercurial-server всё

    Так получилось, что я с незапамятных времён подсел на Меркуриал. Первый коммит аж в январе 2005, до выхода меркуриала, так как я старался…

  • Арче-виндострадания 2.1

    Я тут правил прошлый пост, но оно вышло из-под контроля, поэтому здесь сокращённая версия для меня того, что работает а что нет. EOL ветки: -…

  • Окончательное решение вопроса о долбоебах

    Технические предпосылки для популярности макос среди непрограммистов, так сказать. Обратите внимание на розовый квадратик.