Linux 및 Windows 용 휴대용 GUI 도구 키트에서 작업 중이며 일부 성능 문제가 있습니다. 여러 시스템에서 (악명 높은 Intel GMA 3650을 기반으로하는 내 netbook) 드라이버 설치시 매우 큰 영향을받습니다.X11 GUI 성능
그러나 역설은 대체 VESA 드라이버가 설치되었을 때 내 코드의 성능이 전용 드라이버에서보다보다 훨씬 높은 입니다.
반면 독점 드라이버 인 은 예상대로으로 컴퓨터 성능이 매우 좋습니다. 하드웨어 가속이 작동하고 고화질 비디오가 문제없이 재생됩니다.이 경우에만 내 코드이이 이상한 역전환 방식으로 영향을받습니다.
내 코드는 아무 문제없이 좋은 속도 등
윈도우 포트 (WINAPI를 사용)를 실행하는 Xlib, Xft, pthreads의, 같은 일반적인 라이브러리를 사용합니다. 와인에서도. 또 다른 역설로서, Windows 용으로 컴파일되고 WINE에서 실행되는 동일한 프로그램이 Linux 컴파일 프로그램보다 훨씬 빠릅니다.
이 효과의 원인과 수정할 위치를 알려주세요.
소스 코드 저장소는이 휴대용 예입니다뿐만 아니라 Windows 및 Linux 용으로 컴파일 할 수 있습니다 (일반 FASM에 대한 freshlib/test_code0/TestLib.asm
컴파일)
한 시험 예 trunk/freshlib/TestFreshLib.fpr
에서입니다.
업데이트 1 : 몇 가지 생각과 코드를 탐색 한 후, 나는 가설을 가지고 있습니다. 윈도우에 그래픽을 그리는 데 두 가지 다른 방법을 사용하고 있습니다.
- 선 및 직사각형을 그리는 데 XLib 드로잉 기능을 사용합니다.
- Xft 라이브러리를 사용하여 텍스트를 그립니다.
테스트중인 컨트롤은 이미지 버퍼가 서버 측의 픽스맵 인 이중 버퍼링을 사용합니다.
하지만 IIRC, Xft는 클라이언트 측에서 드로잉 한 다음 이미지를 비트 맵 이미지로 X 서버에 보내고 XLib는 서버 측에서 직접 그립니다.
이러한 두 가지 방법 (및 하드웨어 가속과의 연결)간에 충돌이 발생할 수 있습니까?
가장 놀라운 소리입니다. 문제를 SSCCE로 격리 할 수 있습니까? –
SSCCE 란 무엇입니까? 참고, 저는 C/C++ 또는 Linux/X11 프로그래밍 전문가는 아닙니다. :) – johnfound
아, "짧은, 자기 포함, 올바른 예". 그러나 불행히도 아니오. 당연히 리포지토리 (repository)에 당신을 가리킬 수 있습니다. 이것은 오픈 소스입니다 만, 꽤 많은 파일이있어, 어디에서 문제를 검색 할 수 있을지 모릅니다. (그리고 그것은 어셈블리 언어로되어 있습니다 :)) – johnfound