ICFPC 2019

Jun 27, 2019 14:03


В этот понедельник закончился трехдневный марафон под названием ICFPC. Это такое соревнование, где команды программистов со всего мира пытаются на время как можно лучше решить некую задачу. В этот раз - обход лабиринтов с разным доп. инвентарем. Условия можно прочитать здесь. Это как бы отчет, но на самом деле памятка самому себе на случай, если ( Read more... )

Leave a comment

anonymous June 27 2019, 18:43:00 UTC
Почему type hints не указывали?
Вот тут получают из кложи с type hints производительность аналогичного джава кода http://www.learningclojure.com/2013/02/clojure-is-fast-is-clojure-still-fast.html

Reply

anonymous June 27 2019, 18:56:35 UTC
И еще трансдьюсеры чтоб промежуточных коллекций не было и transients чтобы без персистентности.
Ничего этого в ваших сорцах нет, как можно без этого честно рассуждать о производительности?

Reply

tonsky June 27 2019, 21:21:24 UTC
ну а как вы думаете, почему? потому что не успели!!!

Reply

anonymous June 28 2019, 10:43:52 UTC
Это хорошо, понимаю. Но зачем тогда людей в заблуждение вводить о том что все плохо? Особенно молодых и неопытных. Ведь ты пишешь будто все - труба, кложа все подряд оборачивает, куча промежуточных чихов и вообще пойду на раст смотреть. Так есть же встроенные механизмы для производительности (создатели позаботились), просто надо о них хотя бы упомянуть. А то у людей глаза округляются и они идут дальше на своих жавах/шарпах/... писать. Если цель - отпугнуть, то она достигнута. Не надо так пожалуйста :)

Reply

tonsky June 28 2019, 13:56:59 UTC
Я пишу так потому что это правда. Кложа действительно оборачивает, куча промежуточных чихов. Что, не так что ли? Можно ли из этого выбраться? Прилагая определенные усилия, можно - но зачем тогда Кложа? Получится Джава, так можно было сразу на ней и написать. Упремся в чихи в Джаве. И т.д.

Да даже и не всегда можно выкрутиться средствами Кложи. Если вы такой умный оптимизатор, переведите мне вот это в transients пожалуйста?

(-> level
(update-in [:bots *bot* :path] str REPLICATE)
(update :bots conj (new-bot x y))
(update-in [:collected-boosters CLONE] dec))

Reply

ext_1315491 July 9 2019, 18:05:04 UTC
У вас такой код был самым узким местом в производительности?

Reply

tonsky July 9 2019, 18:49:35 UTC
Я отвечаю на претензию что мы не использовали транзиенты

Reply

tonsky July 8 2019, 15:19:45 UTC
Ну а type hints не указывали, потому что негде было. Они же не делают код быстрее, они исправляют ошибочно медленный код. У нас такого просто не было. Был бы интероп с Java - может быть и был бы, но не всегда они нужны

Reply

ext_1315491 July 9 2019, 18:03:50 UTC
Насколько я понимаю, чтобы математика работала не с объектами, а с примитивами, то как раз типы и нужно указывать.

Reply


Leave a comment

Up