Comments 4
А вы Intel VTune не пробовали использовать для профилировки? Много лет назад стояла у меня задача сделать быструю медианную фильтрацию, и я после наброска на Си спустился на уровень ассемблера и Vtune мне помог найти «узкие места». Помню даже перестановка команд помогала выжать немножко. Вы во многих местах таки находитесь в области предположений, а там всё достаточно определённо должно быть. Хотя для глубокого погружения на уровень конвейеров, промахов кеша, пенальти за невыровненность и т.д. придётся убить огромное количество времени. С выравниванием вообще какие-то непонятки. Да, по-классике двумерный массив с длиной строки 5000 выравнивается (я, кстати видел и на 64 выравниввание), но это никак не даст четырёхкратного увеличения объёма требуемой памяти (равно как и двукратного прироста скорости).
У меня тоже есть термины для оптимизиции — я для себя условно разделяю «макро» и «микро» оптимизации. Скажем, если я адаптирую алгоритм для параллельной обработки — это «макро», а если спускаюсь ниже и оптимизирую код потока — это «микро».
У меня тоже есть термины для оптимизиции — я для себя условно разделяю «макро» и «микро» оптимизации. Скажем, если я адаптирую алгоритм для параллельной обработки — это «макро», а если спускаюсь ниже и оптимизирую код потока — это «микро».
Прикольно. ностальгия прямо: 1985, первый курс, физика, расчет напряженности поля внутри конденсатора этим же методом, фортран, СМ-4…
Если у вас возникает потеря значимости, то какого черта используете 32-битный float?
Тогда надо переходить на 64- или 80-бит расчеты сначала, потом уже фокусы применять.
Тогда надо переходить на 64- или 80-бит расчеты сначала, потом уже фокусы применять.
Если данные выравнивать по 16 байт, т.е. делать «дырки» по 12 байт, то 3/4 линии кеша будет использоваться впустую, что не добавляет скорости. Если я правильно понимаю как это работает.
Sign up to leave a comment.
Тактическая оптимизация или результаты одного тестирования