Тут не исправить уже ничего, Господь, жги! Войти !bnw Сегодня Клубы
Тупо переписал свой стандартный любимый вычислительный тест (объём N-мерных шаров методом Монте-Карло) с Юли на Си. На Юле программа считала 3 секунды, на Си 14. На Си безбожно тормозили случайные числа. Более 90% времени. После того, как заменил вызов `rand` на константы (смищно, да) и в Си, и в Юле, Си стал вдвое быстрее Юли. Тогда я убрал из программы на Юле аннотации типов, откуда можно было. И внезапно она стала не вдвое, а всего в полтора раза медленнее Си. Отсюда три вывода: 1. Мой дурацкий пример вполне вписывается в эту картинку: http://julialang.org/benchmarks/. 2. Компилятор ставит аннотации типов лучше меня (логично, я Юлю второй день знаю). 3. Юля няша.
Рекомендовали: @o01eg
#04KN5S / @dluciv / 3501 день назад

если аннотации типов могут сделать код медленнее, что-то точно неправильно.
#04KN5S/XKF / @gds / 3501 день назад
@gds меньше указанных типов -> больше свободы для оптимизаций //и это программисты?
#04KN5S/3MH / @anonymous --> #04KN5S/XKF / 3501 день назад
у вас * гсч с глобал-локом (типично) * тест не интересный * ожидать от ссей большой скорости - наивно
#04KN5S/5W4 / @anonymous / 3501 день назад
@anonymous Да, я поэтому долго и не думал, где тормозит. Алсо при распараллеливании тоже надо быть внимательным — если тупо гнать одни и те же случайные числа, то есть хороший шанс бессмысленно увелечить количество вычислений, а точность оставить, как было =).
#04KN5S/OGO / @dluciv --> #04KN5S/5W4 / 3500 дней назад
@gds Да, и я даже написал, что неправильно. В данном случае это не что, а кто.
#04KN5S/5D7 / @dluciv --> #04KN5S/XKF / 3500 дней назад
@anonymous Вообще изначально (давно) у меня была задача генерить точки, равномерно распределённые по N-мерной сфере. Ну я тупо брал куб, и откидывал те, которые не попадали в шар. Всё было чудесно, пока на большом количестве измерений я не осознал, что объём шара *падает*! Т.е. стало дико тормозить. Это и далотолчёк для написания программки, котоой я с тех пор тестирую всё, что встречаю =).
#04KN5S/KZO / @dluciv --> #04KN5S/5W4 / 3500 дней назад
@dluciv далотолчёк ---> дало толчок
#04KN5S/BG3 / @dluciv --> #04KN5S/KZO / 3500 дней назад
Алсо надо что-то типа такого вкурить http://www.sprng.org/
#04KN5S/ZSF / @dluciv / 3500 дней назад
дико не рекомендуется использовать rand() для серьёзных вычислений http://eternallyconfuzzled.com/arts/jsw_art_rand.aspx
#04KN5S/7E8 / @anonymous / 3500 дней назад
@anonymous 1. Безусловно. Но это не серьёзное вычисление. Это только бенчмарк. 2. С сишным rand() так и есть. У Юли вполне определённый псевдослучайный алгоритм, в котором случайности чуть больше, чем ни хрена. Его можно сидить откуда-ниюудь типа random.org, тогда будет получше.
#04KN5S/0DM / @dluciv --> #04KN5S/7E8 / 3500 дней назад
@dluciv нет. В правильных языках аннотации типов либо не меняют ничего (ибо type erasure), либо ускоряют (у компилятора появляется возможность специализировать код под значения нужных типов).
#04KN5S/BAE / @gds --> #04KN5S/5D7 / 3500 дней назад
@gds По-моему Юля не обещает достаточно агрессивного для исправления моей собственной дурости type erasure.
#04KN5S/GH6 / @dluciv --> #04KN5S/BAE / 3500 дней назад
@dluciv включаю режим некропостера: получение равномерного распределения на сфере - хорошая задачка. Интересно,можно ли ее решить через полярные координаты, как-то компенсировав то что около центра вероятность появления точки будет больше.
#04KN5S/9VB / @macro --> #04KN5S/KZO / 3398 дней назад

@macro палю: достаточно вероятность выпадения широт сделать пропорциональной sin(α)

#04KN5S/BMB / @hirthwork --> #04KN5S/9VB / 3398 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.