당연히 네이티브 언어에 비해 속도 딸린다는건 알고 있었는데
좀 심하다 시피 느리네요
이미지 비교 함수를 만들었는데, 처음엔 걍 쌩으로 c#에서 만들고 테스트해보니
10초나 걸려서 c++로 dll 만든뒤 dllimport로 불러오는 형식으로 했는데
이렇게 해도 5초 정도 걸려서...
혹시나해서 c++에서 만든 dll 불러서 테스트해보니 1초도 안걸리고
c++ 기반 스크립트 언어 오토잇, 오토핫키 둘 다 1초도 안걸렸습니다
이거 c# 퍼포먼스 올리는 법 없습니까?
있습니다.
CodeCraft // 좀 가르쳐 주시면 안되겠습니까? UI 짜기가 편해서 C# 쓰는데, 이렇게 퍼포먼스가 후달릴줄은 몰랐네요;;
이미지 프로세싱에서 어떤작업하심?
https://github.com/MyBotRun/Libraries/blob/master/ImageSearchDLL/ImageSearchDLL/ImageSearchDLL/util.cpp
dll은 제가 짠게 아니라 여기 소스 몇 부분 손좀 봐서 저한테 맞는 함수 몇개 추가하고 해서 쓰는데, 이게 C#에서 쓸려니 좀 느리게 느껴지네요. 그대로 처음에 아예 깡 C#으로 짠 것 보단 빠르긴 한데... 그래도 느리다는 느낌은 못 지우겠네요
c#으로 이미지 프로세싱 할때는 주의해야되는게 getPixel() setPixel() 쓰면 퍼포먼스 절때~ 안나옵니다. 대신 다른 방법을 쓰면 c#에서도 포인터 쓰는것과 같은 속도를 낼 수 있긴 함니다
c#에서 깡으로 짤땐 lockbit을 이용해 짰습니다. 기본적인 알고리즘은 위에 github dll 소스랑 동일하게 짯는데, 타이머로 재보니 RGB 색값 비교 for 문 부분에서 시간을 다 잡아먹더군요... 그래서 dll을 썼는데, dll도 깡 c#으로 짰을때 보단 빨랐지만, 그래도 그냥 c++과 스크립트 언어 오토핫키, 오토잇 보단 느리더군요... 그래서 똑같은 퍼포먼스 까진 아니더라도 좀 더 빠르게 할 수 잇는 방법은 없나해서 질문했습니다
컴파일 설정에서 unsafe 하셨나요? 그리고 코드 단에서 unsafe {} 로 감싼 블록안에만 메모리 락이 해제되는거 아시져?
네... C#을 접한지 얼마 안되서 구글링 해보면서 깡으로 짯습니다. 깡 C#으로 짤땐 당연히 unsafe를 썻고, dllimport 이용해서 위 github dll을 쓸때도 썻습니다.
새로 글 써서 소스 한번 올려보세여
소스 txt 파일로 업로드해 새로 글 썼습니다. 확인부탁드려요.
http://lgstar.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다. - DCW