[14:38:52] <geniepro> valexey> кстати, PLplot кто-то щупал?
фигня какая-то -- даже биндинга к хаскеллю нету )))
[14:39:37] <valexey> просто хаскель такой фигнёй как численные вычисления не занимается :-) на нем же бузинесслогику пишут!
[15:03:30] <valexey> geniepro: короче, окамл-версия работает меньше чем за секунду!111
[15:03:33] <valexey> разразраз!
[15:03:44] <geniepro> скинь код ))
[15:05:36] <geniepro> valexey: а ты покемонов-то ловишь? )))
[15:06:42] <valexey> в смысле? зачем их ловить?
[15:06:59] <geniepro> ну что бы зажарить и съесть, например )))
[15:08:21] <valexey> https://gist.github.com/anonymous/b705aa796c6f037d1b540b15ee584836
[15:08:37] <valexey> у меня йфончик слишком старый ;-(
[15:08:48] <valexey> надо новый брать! семерочку!
[15:09:03] <valexey> чтобы фармить покемонов!
[15:09:32] <geniepro> так это, есть идеи почему на плюсах такой тормозной код вышел? )))
[15:09:52] <geniepro> valexey: да на четвёртом айфоне у нас тут все ловят ))
[15:10:02] <geniepro> гудроид возьми -- там тоже есть )
[15:10:17] <valexey> на плюсах 0.7 секунды :-)
[15:10:35] <geniepro> ты же говорил 3 сек о_О
[15:10:43] <valexey> это был никошерный компилятор
[15:10:58] <geniepro> [16:20:31] <valexey> Ну вот плюсы, тащемто:
[16:20:33] <valexey> ]$ time ./a.out > /dev/null

real 0m2.922s
user 0m2.920s
sys 0m0.000s
[15:11:04] <valexey> угу
[15:11:11] <valexey> никошерный же
[15:11:20] <geniepro> TinyC что ли? )))
[15:11:34] <geniepro> на LLVM попробуй )
[15:11:37] <valexey> $ time ./a.out > /dev/null

real 0m0.773s
user 0m0.770s
sys 0m0.000s

[15:11:40] <valexey> вот
[15:11:46] <valexey> не, gcc был - он некошерный
[15:12:13] <valexey> а вот шланг - могёт!
[15:12:18] <geniepro> хочешь сказать что хаскель в 20 раз медленнее??? НЕ ВЕРЮ!!! )))
[15:12:47] <valexey> дык модифицируй свой код. :-)
[15:12:57] <geniepro> лень ))
[15:13:06] <geniepro> скоро домой пора ))
[15:13:06] <valexey> я там тащемто просто рандом убрал, сделал так, чтобы массив был отсортирован изначально в обратном порядке
[15:13:15] <valexey> тогда и для этого пузырька там больше всего работы
[15:13:16] <geniepro> ну как я и прелагал )
[15:13:19] <valexey> больше перестановок делать
[15:13:23] <valexey> хотя итераций столько же
[15:13:29] <valexey> угу
[15:14:31] <geniepro> на хаскеле прога тормозила видимо из-за того, что в масииве были ссылки на числа где-то в куче... это надо настоящий мутабельный массив юзать, а мне лень его изучать ))
[15:14:32] <valexey> я вот даже модифицировать быстро хаскельный код не могу
[15:14:43] <valexey> чтобы вместо рандома там n-i записыавлось
[15:14:57] <valexey> короче, хаскель - аццтой.
[15:15:24] <geniepro> вместо
writeIORef (arr ! i) =<< randomRIO (1::Int, 100500)
пиши
writeIORef (arr ! i) (nums - i)
[15:17:39] <geniepro> кстати там строка g <- getStdGen лишняя
[15:18:35] <valexey> $ time ./main > /dev/null

real 0m11.023s
user 0m11.020s
sys 0m0.003s

[15:18:38] <valexey> ИЛЕВЕН!
[15:18:47] <valexey> Таки случайные числа тормозят у всех.
[15:19:13] <valexey> да еще и по разному реализованы
[15:19:30] <valexey> так что всего в 15 раз тормознее хаскель :-)
[15:20:03] <geniepro> ну говорю же массив мутаельных значений -- неидиоматично для хаскеля, так никто не пишет на нём ))
[15:20:20] <valexey> ну да. никто на хаскеле не пишет именно поэтому :-)
[15:20:44] <valexey> в моих задачах увы, мутабельный массив постоянно встречается.
[15:21:13] <valexey> обработка изображений, обработка всяких данных с датчиков (массивы длинною в 10-100 миллионов значений) и так далее.
[15:25:27] <valexey> geniepro: ваще, если за хаскель выступать, то неплохо бы мутабельный массив изучить, иначе всегда будет всё плохо :-)
[15:25:53] <geniepro> valexey: вот я его щас изучаю -- там вроде гораздо проще должно быть чем я сделал до этого
[15:36:03] <geniepro> valexey: попробуй: http://pastebin.com/94XQEMPh
[15:36:21] <geniepro> там в хаскелле куча разных вариантов мутабельных массивов -- хз какой лучше ))
[15:37:29] <valexey> $ time ./haskell_buble > /dev/null

real 0m8.076s
user 0m8.077s
sys 0m0.000s

[15:37:45] <geniepro> чота ненамного лучше ))
[15:38:10] <valexey> ну, 3 секунды таки!
[15:38:28] <geniepro> я думал разница чувствительнее будет
[15:39:41] <valexey> может там таки выход за границу массива чекается?
[15:40:39] <valexey> в общем, хаскель полностью подтверждает мои предсказания относительно него :-)
[15:41:14] <geniepro> ну выход за границу точно проверяется
[15:41:26] <valexey> дык найди такой массив где это можно отрубить
[15:41:28] <geniepro> ест ещё Unboxed массив -- может он шустрее
[15:43:04] <geniepro> valexey: попробуй unboxed: http://pastebin.com/G730gD0r
[15:43:19] <geniepro> но там значения анбекснуты -- а границы массива хз
[15:44:14] <geniepro> границы массивов всё равно проверяются
[15:44:50] <valexey> $ time ./haskell_unboxed_buble > /dev/null

real 0m2.357s
user 0m2.353s
sys 0m0.000s

[15:44:53] <valexey> ещё лучше
[15:45:00] <valexey> осталось проверки на границы выпилить :-)
[15:45:34] <geniepro> там есть какая-то операция unsafeAt -- не знаю что это
[15:45:47] <valexey> скорее всего без проверки границ доступ к элементу
[15:47:28] <valexey> а всякие unsafeRead unsafeWrite не юзаются?
[15:48:59] <valexey> но, кстати, поздравляю - хаскель уже опередил КП в котором даже проверки на границы массива отключены были :-)
[15:49:29] <geniepro> ну вместо unsafeRead есть unsafeAt
а вместо unsafeWrite вроде unsafeReplace -- пока не понял
[16:03:00] <geniepro> не могу найти аналога unsafeWrite
[16:03:39] <valexey> ну значит надо найти массив где он есть!
[16:03:50] <valexey> чтобы прям шашкой наголо!
[16:05:45] <geniepro> тьфу есть же:
unsafeRead :: Ix i => IOUArray i Int32 -> Int -> IO Int32
unsafeWrite :: Ix i => IOUArray i Int32 -> Int -> Int32 -> IO ()
[16:06:44] <valexey> дык.
[16:09:28] <valexey> т.е. Аду я даже например тестировать не хочу, ясно что там будет производительность уровня плюсов.
[16:10:32] <geniepro> valexey: попробуй: http://pastebin.com/qckM1AnS
[16:10:51] <geniepro> я тестил как-то аду -- несколько ниже сишечки скорость была
[16:11:51] <geniepro> а теперь все эти результаты тестирования выложи на свой форум, а то он годами не обновляется уже ))))
[16:12:04] <valexey> $ time ./haskell_unsafe_buble > /dev/null

real 0m2.064s
user 0m2.060s
sys 0m0.007s

[16:12:21] <geniepro> почти нет разницы? о_О
[16:12:34] <valexey> ну как, 15 процентов тоже разница!
[16:12:42] <geniepro> ну, про сишарп писали, что там отключение проверки границ массива даёт прирост на 5%
[16:13:07] <geniepro> так чо получается твой силанг в три раза шустрее, а не в 20? )))
[16:13:12] <valexey> Ну, на Аде же тожно можно голышём бегать, отрубить проверки все. Там если разница и будет с плюсами, то только за счет того, что у Ады бекенд таки гццшный.
[16:13:42] <valexey> Угу. шланг в три раза, камло - чуть более чем в два раза быстрее :-)
[16:13:53] <geniepro> ну там ещё при больших объёмах данных хз как будет менеджер памяти работать на аде -- я не проверял
[16:14:02] <valexey> при этом код на плюсах получился с первого раза, код на камле получился со второго.
[16:14:08] <valexey> при том, что я камла не знаю.
[16:16:13] <valexey> итого - хаскель требует более высокой квалификации, писать быстрый код на нем дольше а результат все равно хуже чем на плюсах или камле.
[16:16:18] <valexey> вывод - НИНУЖЕН!
[16:16:44] <valexey> Хм. Правда код хаскельный при этом работает быстрее и безопаснее чем на КП/ББ...
[16:16:47] <valexey> хм-хм
[16:16:56] <valexey> но квалификация один фиг нужна выше!
[16:17:34] <geniepro> всё я домой ))
[16:17:41] <geniepro> хаскель бутиковый язык ))
[16:18:17] <valexey> труъ-лакшери язык!
[16:18:19] <valexey> удачи :-)
[16:20:30] <valexey> в общем, я не вижу смысла в КП коль он тормознее окамла даже на таких задачах.
[16:22:09] <valexey> такое ощущение, что народ просто к циклу разработки типичному для ББ и классической Оберон-системы привык.
[16:22:19] <valexey> как иные к repl-циклу привыкают.
[16:31:41] <valexey> немного древних боянов: lionet.info/pdf/2010-lev-walkin-erlang-experience.pdf
[16:33:22] <valexey> собственно и там хаскель всосал :-)
[16:33:31] <valexey> причем с теми же результатами что и на пузырьковом тесте
[21:57:11] <valexey> хха. оказывается Go современный не со всем статически линкуется по умолчанию. Чтобы оно libc вкомпиляло нужно флажками перед компилятором помахать.
[21:58:38] <valexey> такс, пора выложить исходники теста на джихаб.
[22:13:24] <valexey> и позорные результаты :-)