open64 и аналоги
Рассматривая бенчмарки компиляторов, неизбежно приходишь к мысли о ценности бинарных сборок: есть возможность каждую функцию собрать именно тем компилятором, который для неё лучше всего, и при этом не лезть самому в ассемблер.
(А этот open64 забавный - у него мозги устроены совсем иначе, чем у gcc и clang.)
(А этот open64 забавный - у него мозги устроены совсем иначе, чем у gcc и clang.)
no subject
no subject
no subject
vs2008sp1, win_xp 32.
Код идентичный.
Организация (если не изменяят склероз) следующая:
Поток А кладет в буфер кадры с веб-камеры на 30fps 320x240 или 15fps 640x480.
Поток Б выдергивет из буфера последний кадр и грохает все в буфере (если там больше одного кадра). Проводит вычисления, формирует в статических масивах красивки для пользователя. Отрисовывает красивки пользователю.
Время замерялось исключительно в потоке Б. Исключительно потраченное на вычисления (без отрисовки, гроховолова скпнутых кадров и лока мьютексов).
Как оболочка GUI - Qt. Перед мат алгоритмами - преобразование QImage в RGB24 или в 8-bit greyscale буфер без выравнивания строк по 2^n байтам (считай pragma pack 1).
ключики gcc (после перебора всевозможных вариантов) :
-ffast-math \
-march=pentium4 \
-mfpmath=sse \
-O3 \
-fno-strict-aliasing \
-msse \
-msse2 \
-msse3 \
-fomit-frame-pointer \
-foptimize-register-move \
-funroll-loops \
-ffinite-math-only
ключики vs, типа,: //Ob1 //Oi //Ot //GT //GL //EHsc //GS- //arch:SSE2 //fp:fast
Время отработки считалось с помощью http://qt-project.org/doc/qt-4.8/qtime.html
Алгоритм, например, непосредстевенно этот http://www.cs.brown.edu/~pff/segment/
Компутер один и тотже.
no subject
no subject