Не обязательно заниматься такой обфускацией кода. Практически невозможно понять что делает вот это "*dst++ = (src += 2)[-2]". Можно записать это по-нормальному — по одному оператору на строчке — компилятор сгенерирует идентичный код.
Основное, что хотелось бы понять — копируемый столбик лежит непрерывно в памяти или нет?
Какая раскладка исходной матрицы в памяти? Какого размера столбик? И какого размера строки?
Здравствуйте, Aleksey Skurihin, Вы писали:
AS>у кого есть идеи
попробуй в цикле звать такую функцию
inline void stripped_copy( T* dst, const T* srcl int dst_count )
{
for* int i = 0; i < dst_count; i++ ) {
dst[i] = src[i * 2];
}
}
Очень даже может быть, что для небольших стандартных T она будет быстрее твонй...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Нужно быстро создать матрицу из нечетных столбиков исход
На архитектурах, строго относящихся к misalign'у, возможны провалы производительности и даже аппаратные ошибки, если srcw нечётно. (В тех случаях, когда мы химичим с вордами).
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re: Нужно быстро создать матрицу из нечетных столбиков исход
Здравствуйте, remark, Вы писали:
R>Здравствуйте, Aleksey Skurihin, Вы писали:
AS>>if (IsEqualGUID(mtype_, MEDIASUBTYPE_YUY2)) {
AS>> }
R>Не обязательно заниматься такой обфускацией кода. Практически невозможно понять что делает вот это "*dst++ = (src += 2)[-2]". Можно записать это по-нормальному — по одному оператору на строчке — компилятор сгенерирует идентичный код.
R>Основное, что хотелось бы понять — копируемый столбик лежит непрерывно в памяти или нет? R>Какая раскладка исходной матрицы в памяти? Какого размера столбик? И какого размера строки?
Это уже танцы с бубном, думал поможет
в памяти лежит кадр из видео, непрерывным буфером. В котором каждый второй байт нужно убрать.
Радость от нахождения ошибки часто омрачаеться осознанием собственой глупости.
Re[2]: Нужно быстро создать матрицу из нечетных столбиков ис
Здравствуйте, Bell, Вы писали:
B>Попробуй немного развернуть внутренний цикл в помощью того же Duff’s device.
Скорее всего компиллер сам до такого додумается...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re: Нужно быстро создать матрицу из нечетных столбиков исход
Здравствуйте, Aleksey Skurihin, Вы писали:
AS>быстрее чем так AS>можно на ассемблере AS>у кого есть идеи
Всем спасибо. Померял код по времени, потом посчитал, потом понял что Y800 спасет отца русской демокоратии, а любое конвертирование все равно безобразно ресурсоемко..
Радость от нахождения ошибки часто омрачаеться осознанием собственой глупости.