Я ищу способы ускорить «тупик» в моей программе эликсиров.Эликсир с плотной петлей ускоряется
Enum.reduce(list, 0, fn ({c,v},acc) -> v*elem(tuple_array,c) + acc end)
Это просто пробегая список кортежей и для каждого это делает: кортеж поиск (с представляет собой целое число), умножение и дополнение.
Я попытался вставить в голове модуля
@compile [:native, {:hipe, [:verbose, :o3]}]
и MacOS это показывает, что он компиляцию родным. Но когда я иду и запускаю код из оболочки iex , он работает еще медленнее, чем раньше. Я что-то упустил?
UPDATE 3 мая 2015 Теперь я пришел к выводу, что мой плотный контур работает со скоростью почти эквивалентными языками как Fortran - ну не порядков медленнее. Мое настоящее узкое место, похоже, является отправкой вывода этого цикла в другой процесс, особенно когда это происходит между узлами в сети.
Спасибо всем, кто проявил интерес.
порядке может быть ответ заключается в использовании Erlang Native Реализована функция для этого бита кода - с помощью GCC для компиляции. Давайте посмотрим ... – GavinBrelstaff