2009-12-04 1 views
1

Ruby에서 Win32의 GetPixel()을 사용해 보았습니다. 쿼드 코어 Intel 시스템에서도 정말 느립니다. 예를 들어 100 x 10 픽셀 = 1000 픽셀과 같이 매우 작은 영역을 얻으면 30 초가 걸릴 수 있습니다. 같은 지역을 한 번에 가져 오는 것과 같은 더 좋은 방법이 있습니까?왜 GetPixel()이 Ruby (또는 아마도 Perl 또는 Python)를 사용하여 매우 느리고 다른 방법으로이를 수행하는 이유는 무엇입니까?

+0

는 "심지어 쿼드 코어 인텔 컴퓨터에"-이 멀티 코어 시스템의 일반적인 오해이다. 언어가 멀티 코어 아키텍처를 사용하지 않거나 사용할 수없는 경우에는 그렇지 않습니다. 프로그램은 마술처럼 그렇게하지 않습니다. – LiraNuna

+0

쿼드 코어는 머신이 (1) 합리적으로 현대적인 머신이고 (2) 다른 프로세스에 묶이지 않고 100 % 속도로 프로그램을 실행할 수 있다고 제안하는 것입니다. –

답변

1

원하는 기능이 BitBlt라고 생각합니다.

+0

하지만 여전히 느립니다. 현재 i7에서 ~ 1400msec. – Nakilon

1

Ruby에 대해 많이 알지 못하지만 해석되지 않습니까? 그것이 있고 Ruby 라이브러리 중 하나를 통해 Win32 API 호출을 호출하고 GetPixel을 호출 할 때, 그렇다면 느려질 것입니다.

Win32 API를 통해 Ruby에 액세스 할 수 있다면 BitBlt를 살펴 봐야합니다. Bit-Block-Transfer : 개별 값보다는 버퍼 값을 반환합니다. 이것은 여러 번 더 빠를 것입니다.

물론 지금은 Device Context, 비트 맵 구조 및 원시 메모리 (Ruby가 제공하는 것보다 낮은 수준의 구성 요소)를 처리해야합니다.

http://winprog.org/tutorial/bitmaps.html

관련 문제