Size: a a a

Язык программирования Julia / Julia programming language

2020 February 05

RS

Roman Samarev in Язык программирования Julia / Julia programming language
да
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Ого, всё интереснее и интереснее.
Я ещё не сделал относительно максимума, но результат немного неожиданный (хотя задним умом конечно ожиданный 😊) )
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Причём этот странный прыжок в районе 200 элементов сохраняется, то есть это особенность языка, а не случайный выброс из-за GC
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Андрей Оськин
Причём этот странный прыжок в районе 200 элементов сохраняется, то есть это особенность языка, а не случайный выброс из-за GC
4096 / sizeof(Int64)
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Ха, похоже на правду, да.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
страница памяти процессора
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Я правильно понимаю, что вывод общий такой - если ты укладываешься в страницу памяти, то имеет смысл пользоваться всякими хинтами (inbounds/hintsize), если выходишь за эти пределы, то можно уже не дёргаться и не заниматься лишними оптимизациями, которые уже мало что дают.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
из графика это не следует 🙂
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
hintsize для того, чтобы выделить предварительно область памяти для push!. Но время там съедают лишние операции типа проверки размера и инкремента. А в прямом копировании оно значения и так не имеет
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
из графика видно, что время, затраченное на обработку всего, что меньше одной страницы - одинаково. Это - да
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
но это ошибки измерения малых интервалов времени. Надо смотреть, как реализовано. Такие вещи надо делать на тактах конкретного ядра процессора
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
и, кстати, процессор не может взять памяти меньше одной страницы. Впрочем, диспетчер памяти julia, технически может её нарезать сам на несколько областей
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Хм.
Не понимаю, почему не следует 😊

Ну, то есть чисто по рабоче крестьянски - добавление @inbounds после 1000 элементов перестает давать прибавку в скорости
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
sizehint менее стабильный, но тем не менее даёт 5-10% прибавки регулярно, так что лучше использовать, чем не использовать.
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Андрей Оськин
Хм.
Не понимаю, почему не следует 😊

Ну, то есть чисто по рабоче крестьянски - добавление @inbounds после 1000 элементов перестает давать прибавку в скорости
inbounds/hintsize не помогут, потому что памяти уже выделено как минимум 1 страница целиком
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
Андрей Оськин
Хм.
Не понимаю, почему не следует 😊

Ну, то есть чисто по рабоче крестьянски - добавление @inbounds после 1000 элементов перестает давать прибавку в скорости
возможно, что оптимизация автоматическая
источник

RS

Roman Samarev in Язык программирования Julia / Julia programming language
я запустил у себя. Строится. versioninfo() в скрипте работает только с using InteractiveUtils
источник