LINUX.ORG.RU

История изменений

Исправление Puzan, (текущая версия) :

А это открытый проект?

Пока не выкладывал, но будет.

Мне не казалось, что racket/place заметнее тормозит

С places проблема в скорости передачи данных через каналы. У меня вычислений мало, а данных много, укорения получить не удалось.

У futures другая проблема - не много операций подходят под определение «“Safe” parallel execution». Например, если я делю вектор между фьючерами, то это unsafe и фьючеры блокируются, т.е. ждут друг друга. Внутри фьючера нельзя создать вектор и вернуть наружу - это тоже unsafe. А если делать списками, то получаются тормоза на создании списка и теряется весь профит от многопоточности. Пробовал варьировать размер списка и кол-во фьючеров, не помогает.

Ну а ракетные треды - они вообще не треды.

Возможно, я что-то упустил. Если хочешь, попробуй ускорить простую задачу: посчитать магнитуду 10-20 миллионов комплексных чисел. Числа готовы, находятся в векторе или списке. Результат сохранить в новый вектор или список.

В guile эта задача на отлично решилась с помощью futures - ускорилось в несколько раз сообразно количеству процессоров.

Исходная версия Puzan, :

А это открытый проект?

Пока не выкладывал, но будет.

Мне не казалось, что racket/place заметнее тормозит

С places проблема в скорости передачи данных через каналы. У меня вычислений мало, а данных много, укорения получить не удалось.

У futures другая проблема - не много операций подходят под определение «“Safe” parallel execution». Например, если я делю вектор между фьючерами, то это unsafe и фьючеры блокируются, т.е. ждут друг друга. Внутри фьючера нельзя создать вектор и вернуть наружу - это тоже unsafe. А если делать списками, то получаются тормоза на создании списка и теряется весь профит от многопоточности. Пробовал варь ровать размер списка и кол-во фьючеров, не помогает.

Ну а ракетные треды - они вообще не треды.

Возможно, я что-то упустил. Если хочешь, попробуй ускорить простую задачу: посчитать магнитуду 10-20 миллионов комплексных чисел. Числа готовы, находятся в векторе или списке. Результат сохранить в новый вектор или список.

В guile эта задача на отлично решилась с помощью futures - ускорилось в несколько раз сообразно количеству процессоров.