/ / Czy istnieje przewaga wydajności w korzystaniu z 64-bitowej wersji openCV + Emgu zamiast 32-bitowej? - c #, opencv, 32bit-64bit, wydajność, emgucv

Czy istnieje przewaga wydajności przy korzystaniu z 64-bitowej wersji openCV + Emgu zamiast 32-bitowego? - c #, opencv, 32bit-64bit, wydajność, emgucv

Opracowuję aplikację, która przetwarza obrazy przechwycone w czasie rzeczywistym za pomocą kamery Point Grey (http://www.ptgrey.com/). Point Grey SDK jest opakowaniem .net i może być 32-bitowy lub 64-bitowy.

Aby przetworzyć przechwycone obrazy, używam opakowania dla openCV o nazwie Emgu CVhttp://www.emgu.com/), który jest dostępny zarówno w wersji 32-bitowej, jak i 64-bitowej.

Teraz, będąc na Vista64, poszedłem do 64-bitowych wersji FlyCapture (SDK Point Greya) i Emgu CV (w tym do instalacji openCV), mając nadzieję na maksymalizację wydajności.

Ostatnio chciałem zadzwonić do mojegoFlyCapture + Emgu DLL z XNA, który niestety istnieje tylko w wersji 32-bitowej, i zdaję sobie sprawę, że być może będę musiał ponownie zainstalować wszystkie te komponenty w 32-bitowej wersji, ponieważ naprawdę nie chcę przechodzić przez IPC, zdalnie, itp

Czy poza oczywistym ograniczeniem przestrzeni pamięci związanej z 32-bitową, czy istnieje również spadek wydajności, którego powinienem oczekiwać? Jakie to dramatyczne i dlaczego?

Z góry dziękuję za wszelkie porady lub wyjaśnienia.

Odpowiedzi:

1 dla odpowiedzi № 1

Wypróbuj i zobacz!

Mogę wymyślić powody, dla których może to pójść w obie strony (nieznajomość oprogramowania, którego używasz szczegółowo).

Twoje wskaźniki są o połowę mniejsze w procesach 32-bitowych,tak, aby zmniejszyć ciśnienie pamięci. Oprogramowanie 32-bitowe trwa już dłużej i może być lepiej zoptymalizowane. Ale z drugiej strony przetwarzanie obrazu ma tendencję do reagowania na większe rozmiary rejestrów, jakie zapewniają 64-bitowe procesy.

Podejrzewam, że wydajność będzie w tym samym parku, może plus lub minus 20%. Ale nigdy nie możesz być pewien. Jeśli uzyskasz różnicę rzędu wielkości, wtedy będę się martwił.


6 dla odpowiedzi nr 2

Po wielu testach okazuje się, że x86 combo openCV + emgu wykonuje 1,408 razy wolniej niż x64 w teście z użyciem sekwencji 14 różnych typowych metod openCV (wygładzanie, kopiowanie obrazów, konwersja formatu obrazu itp.)


1 dla odpowiedzi nr 3

Mamy sytuację simimair (kamera PT Grey i opakowanie emgu openCV dla naszej aplikacji C #).

Również dowiedziałem się, że emgu jest jeszcze szybszy pod x64(wygraj 7 w porównaniu z wygraną XP x86). Najpierw myślałem, że x64 jest wolniejszy w pozostałej części mojej aplikacji, ale to było w trybie debugowania. W trybie wydania wydajność jest porównywalna. Wygląda na to, że wersja debugująca w VS2010 (x64) jest wolniejsza niż wersja VS2008 (x86).