История изменений
Исправление 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 - ускорилось в несколько раз сообразно количеству процессоров.