Есть ли преимущество в производительности при использовании 64-битной версии openCV + Emgu вместо 32-битной? - PullRequest
0 голосов
/ 06 июня 2010

Я разрабатываю приложение, которое обрабатывает изображения, снятые в режиме реального времени камерой Point Grey (http://www.ptgrey.com/). Point Grey SDK - это оболочка .net, которая может быть 32- или 64-битной.

Затем для обработки захваченных изображений я использую оболочку для openCV под названием Emgu CV (http://www.emgu.com/), которая также доступна как в 32-битном, так и в 64-битном вариантах.

Теперь, находясь на Vista64, я выбрал 64-битные версии FlyCapture (Point Grey's SDK) и Emgu CV (которая включает в себя openCV в своей установке) в надежде максимизировать производительность.

Недавно я хотел вызвать мой код DLL FlyCapture + Emgu из XNA, который, к сожалению, существует только в 32-битной среде, и я понимаю, что мне, возможно, придется переустанавливать все эти компоненты в 32-битной версии, поскольку я не хочу через IPC, удаленное взаимодействие и т. д.

Помимо очевидного ограничения пространства памяти, присущего 32-битному, следует ли ожидать потери производительности? Насколько это было бы драматично и почему?

Заранее спасибо за любой совет или объяснение.

Ответы [ 3 ]

6 голосов
/ 06 июня 2010

После длительного тестирования выясняется, что x86 openCV + emgu combo работает в 1,408 раза медленнее, чем x64 в тесте с использованием последовательности из 14 различных типичных методов openCV (сглаживание, копирование изображений, преобразование форматов изображений и т. д.)

1 голос
/ 31 августа 2010

У нас есть ситуация с simimair (камера PT Grey и оболочка emgu openCV для нашего приложения C #).

Также выяснилось, что emgu еще быстрее под x64 (win 7 по сравнению с win XP x86). Сначала я думал, что x64 медленнее на остальной части моего приложения, но это было в режиме отладки. В режиме релиза производительность сопоставима. Похоже, что отладочная версия под VS2010 (x64) медленнее, чем версия VS2008 (x86).

1 голос
/ 06 июня 2010

Попробуйте и посмотрите!

Я могу подумать о причинах, по которым это могло бы пойти в ту или иную сторону (не очень хорошо разбираясь в программном обеспечении, которое вы используете подробно).вдвое меньше в 32-битных процессах, что снижает нагрузку на память.32-битное программное обеспечение существует дольше и может быть лучше оптимизировано.Но, с другой стороны, обработка изображений имеет тенденцию хорошо реагировать на больший размер регистра, который обеспечивают 64-битные процессы.

Я подозреваю, что производительность будет в том же парке, возможно, плюс или минус 20%.Но вы никогда не можете быть уверены.Если ты получишь разницу в типах по порядку величины, я бы тогда забеспокоился.

...