Здравствуйте, LaptevVV, Вы писали:
PD>>Рассмотрим следующую ситуацию PD>>Надо пропустить достаточно большое количество задач, каждая из которых выполняет большое количество арифметических операций. Иных действий в задачах нет.Все данные для всех задач уже размещены в ОП. Всего задач N, причем К типов , каждого типа nk задач. PD>>Например, надо 100 раз произвести обращение матрицы, 50 раз вычислить сумму ряда и 200 раз обработать некое графическое изображение. Тогда N=350, K=3, n1 = 100, n2 = 50, n3 = 200.
LVV>Поэтому даже отслеживание мало что даст. LVV>Ну, будет задача тормозиться по смене кеша. LVV>И что с этим делать?
Как я написал, оптимизировать сами алгоритмы по отдельности будет эффективней.
В результате, как часто бывает, оптимизированные алгоритмы 1 потоке выполнятся быстрее чем какие попало в параллели.
Из моих недавних оптимизаций — нужно было писать много измерений в файл, миллионы в секунду, время в каждой записи.
Написание своей функции преобразования времени в строку дало выигрыш в 40 раз по сравнению с библиотечной функцией.