Denis
ну наверное потому что когда на хаскелле пишешь как на жабе, получается медленно
Denis
а вообще JVM то на порядок круче стал за последнюю 5летку
Denis
денег влили и много чего полетело
Denis
(бабки на скамейке рассказали, есличо)
Dmitry
да что-то оно не туда полетело, походу.
Anatolii
да в джаву реально много вливают, в хаскель бы треть влить бы хотя бы:)
Dmitry
Go на поляне куда меньше времени
Dmitry
а летит уже повыше
Anatolii
это смотря по чему мерять
Dmitry
ну, наверняка библиотек для inversion of control там меньше на порядки
Anatolii
джава реально быстрая, вон нетфликс бы не сидел на ней
Anatolii
у гошечки просто асинхронность из коробки и думать не надо - это сейчас очень любят
Dmitry
ну я тоже не люблю думать, EitherT, ErrorT, ExceptT или ThrowM
Anatolii
ну и они продают себя со своим "революционным GC"
Dmitry
или Catch
Anatolii
да - вго все просто
if err != nil {
return err
}
Dmitry
меня прям кажлый раз колбасит, когда об этом думать приходится. или еще хуже - совокуплять код, который в разных этих монадах работает
Anatolii
снипет запилил в вим 1 раз - и не думаешь
Anatolii
потом только по файлу скролить долго в поисках полезного кода
Aragaer
джава быстрая от джита
Anatolii
A64m
@voidlizard точнее 5 сек на хаскеле и 54308 сек на идрисе. Это потому что ленивость в идрисе то ли не доделана, то ли так и задумана, что она не кол бай нид, а кол бай нейм как в алголе 60, короче говоря ничего не мемоизируется и каждый раз пересчитывается заново, потому просто асимптотика алогитма другая получается
Dmitry
@anpryl я не очень понимаю, в чем опция в выборе между ErrorT, ExceptT и ThrowM
A64m
а окамл - это надо opam ставить, который ставит разные врерсии компилятора в сендбокс, там все новое доступно, включая и пререлизы и экспериментальные ветки всякие с имплицитами и т.д.
Dmitry
я что-то пас.
Dmitry
добровольцы могут померять относительно qnikst5
Dmitry
и добавить в комменты
Anatolii
Dmitry
ну или собрать бинарник для amd64 linux и заслать мне
Dmitry
с go прокатило
Anatolii
с Either у нас все в типе остается - что может прилететь
Dmitry
с Either понятно
A64m
да это не так страшно как звучит, ну по сравнению с тем что раньше было точно лучше
Dmitry
это как раз норм опция
Dmitry
остальное поставилось или никсом или из коробки
Anatolii
а с MonadThrow - мы просто знаем что прилететь что-то может, а что - фиг его знает
Dmitry
мне просто окамл это не нужен, аптом его еще снести можно, а опамы эти все я точно забуду
Dmitry
а SSD у ноута маленький, и нужен никсу
A64m
да никому не нужен
Dmitry
@anpryl наверняка тут можно выработать политику партии и ей следовать
Dmitry
в плюсах вот можно было декларации throws писать, но на практике никому не нужно
Dmitry
как правило, если что-то прилетело - то летит до самого верха и там спокойной всё помирает. в 90% случаев этого всем достаточно
Danila Matveev
Dmitry
ну в данной задаче оно точно будет дольше подниматься, чем сишный код закончит работать
Danila Matveev
подъем около 0.1сек для такой джарки
так что подняться успеет))
Dmitry
интересно, почему вот нельзя так упороться по рабочим задачам, как получилось по бессмысленной специальной олимпиаде?
A64m
ну, бывает и хуже, конечно
Dmitry
sml например
A64m
смешно, но SMP и llvm бекенд быстрее для SML (почти)накостылили чем для окамла
Dmitry
это mlton ?
Dmitry
или еще что-то живое есть?
A64m
вроде даже нынешняя попытка SMP в окамле сделать базируется на наработках для млтона
A64m
и авторы какие-то общие
A64m
да smlnj вечно живой, но по нынешним временами это несерьезная имплементация
Kir
просто, вот как раз кажется, что там взвешеный инженерный подход. Нету как раз всей этой мороки с трансформерами и всего, о чем говорил Дмитрий выше. Меньше гарантий, эффекты в типах не отражены, но возможно и не всегда надо? просто размышляю)
A64m
там сравнение как в скриптах, например, пытается все сравнивать, если не получается - падает. подход инженернее некуда, конечно
A64m
мутабельные строки (ну это они сейчас исправляю, там переходный период)
Anonymous
A64m
и если тайпклассы можно применять для всяких повседневных удобств вроде сравнений, арифметики и проч. то в окамле и в эмлях вообще их главное средство организации кода для такого непригодно, и все это решается ад-хок костыликами либо не решается вообще
Alexander
в работе обычно задачи не локализованы так
A64m
Но, конечно, большинство языков все равно куда хуже
eahqzsr
Специальная олимпиада, раунд 2: https://gist.github.com/dmitryplatonov/e1e2065180ee4bf2def4d4311c219297
Dmitry
и чем оно концептуально отличается?
Dmitry
там тормоза были в выхлопе, сами токены обходятся за 0.00x хоть на чём
Dmitry
в чем вообще прикол этой задачи?
Dmitry
для чего оно нужно?
Kir
Aragaer
в той задаче в случае С был большой прирост от того, что перебирать надо было только суффиксы, а по префиксам скакать не требовалось так быстро. Но если есть быстрый перебор суффиксов, то сделать быстрый перебор префиксов не проблема
A64m
ну да
Dmitry
@aragaer нет же - для каждого префикса перебирались все суффиксы
Dmitry
это ли не обход всех префиксов?
Dmitry
а прирост был за счет специализации memcpy
Aragaer
в смысле скорость операции "переход к следующему префиксу"
Aragaer
ну да, memcpy на первом месте по прожорливости, а rawmemchr на втором
Dmitry
там если убрать выхлоп, то время сразу падает на порядки
Dmitry
перебирается причем всё
Alexander
судя по питонокоду никакой разницы не будет
Alexander
rawmemchr - нафиг
Alexander
если не только пробел и \n разделители