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 № 1Wypró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).