Я ищу способы ускорить "жесткий цикл" в моей программе эликсира.
Enum.reduce( list, 0, fn ({c,v},acc) -> v*elem(tuple_array,c) + acc end )
Он просто просматривает список кортежей и для каждого выполняет: поиск кортежа (c — целое число), умножение и сложение.
Я попытался вставить в голову модуля
@compile [:native, {:hipe, [:verbose, :o3]}]
а в macOS он показывает, что компилируется нативно. Тем не менее, когда я иду и запускаю код из оболочки iex, он работает даже медленнее, чем раньше. Я что-то упустил здесь?
ОБНОВЛЕНИЕ 3 мая 2015 г. Теперь я понял, что моя замкнутая петля работает со скоростью, почти эквивалентной скорости компилируемых языков, таких как Fortran, а не на несколько порядков медленнее. Моим реальным узким местом, похоже, является отправка вывода этого цикла другому процессу, особенно когда это происходит между узлами в сети.
Спасибо всем, кто проявил интерес.