멀티 바이트 문자 시퀀스 렌더링이 믿을 수 없을 정도로 느린 이유는 무엇입니까?


11

약 일주일 전에 나는 긴 일본어 파일 이름을 가진 파일이 보일 때마다 μTorrent의 파일 목록이 1 초도 걸리지 않는다는 것을 깨달았습니다. 호기심이 많았지 만 당시에는 걱정할 시간이 없었습니다. 특히 µTorrent로 제한되어 있었기 때문입니다.

그러나 오늘 나는 그것이 아니라는 것을 깨달았습니다. 예를 들어 긴 멀티 바이트 문자 파일 이름으로 텍스트 파일을 저장하고 메모장에서 열면 이상한 결과가 나타납니다. 창 크기를 조정하려고하면 크롤링 속도가 느려집니다. 그러나 창에서 그립을 풀고 커서 가 둘로 어떻게 분할 되는지 볼 수 있습니다 . 하나는 저에 의해 제어되고 다른 하나는 원래 "드래그 동작"을 실행하는 더 나은 단어가 없기 때문에 일종의 "고스트 커서"입니다. 쥐. 이것은 이러한 특성의 파일 이름에만 적용되며 메모장 및 µTorrent 이외의 응용 프로그램에서도 테스트했습니다.

이 이상한 행동을 일으키는 원인에 대한 단서를 찾으려고했지만 아무것도 찾을 수 없습니다. 여기 누군가 무슨 일이 일어나고 있는지 알고 있습니까?

불행히도, 나는 스크린 샷을 찍기 전에 크기 조정이 완료 될 때까지 모든 스크린 샷 응용 프로그램이 멈추는 것처럼 보이기 때문에 스크린 샷을 찍을 수 없습니다 ...

편집 : 문제를 보여주는 비디오를 녹화했습니다. 이것이 원인을 식별하는 데 도움이되는지 확실하지 않지만 적어도 위의 설명보다 낫습니다.

https://vimeo.com/58619918

편집 2 : 여기의 요청에 따라 샘플 파일 : 그것은 긴 멀티 바이트 파일 이름으로 빈 파일 단순히 주 있음 : http://goo.gl/bgnGP은 (그리고 파일 이름을 처리 할 수있는 브라우저와 당신의 사람들을 위해, 여기에 지퍼 파일 : https://dl.dropbox.com/u/55495248/multibyte.zip )


처음에 YouTube에 업로드하려고했지만 실제 이름을 표시하기 위해 계정을 "업그레이드"하지 않으면 불가능합니다. 고맙지 만 사양 할게. Vimeo가 괜찮기를 바랍니다.
Merigrim

컴퓨터에 대한 세부 정보를 알려주시겠습니까? 특히, 사용하는 비디오 카드 (또는 칩 내부의 비디오 보드입니까? 비디오 드라이버가 업데이트됩니까? 렌더링 문제는 Windows가 아닌 비디오로 인해 발생할 수 있습니다.
woliveirajr

1
트윗 담아 가기 다음은 제거 된 DxDiag.txt (CPU, GPU, 메모리 등에 대한 정보가 포함되어 있음)입니다. pastebin.com/eYvS8mGL 비디오 드라이버를 업데이트 한 후 한 두 달이 지났다고 생각합니다.
Merigrim

2
질문 superuser.com/questions/371282/… 에 대한 첫 번째 답변을 시도하고 도움이되는지 확인하십시오.
woliveirajr

1
또한 위의 동일한 링크에서 support.microsoft.com/kb/2505438에
woliveirajr

답변:


1

유니 코드 처리 방법을 설명 할 수는 있지만 실제로 귀하의 질문에 직접 대답 할 수는 없습니다. 첫 번째 쓰기에는 속도가 느 렸지만 일단 완료되면 다시 빨라집니다 ...

유니 코드는 우리가 비행기라고 부르는 것으로 구성되어 있습니다. 평면은 256 자입니다. 많은 상황에서 글꼴은 하나의 평면을 처리하여 부분적으로 매우 큰 파일을 피할 수 있지만 많은 언어 (영어, 프랑스어, 독일어 ...)에 충분하기 때문에 충분합니다. 그러나 아시아 언어는 여러 평면을 포괄하는 더 큰 글꼴을 사용합니다. 완전한 일본어 문자 세트를 얻으려면 약 10 비행기가 맞습니다. 중국어가 더 많음 (특히 중국어 번체)

이러한 글꼴로 렌더링 할 때 해당 글꼴을 선택해야합니다 (한 글꼴이 모든 문자를 처리하기에 충분하지 않은 경우 운영 체제가 글꼴을 전환합니다. 또한 시스템에서 해당 글꼴을 처음 쓸 때 디스크에서 글꼴을로드해야합니다. 큰 글꼴을 가진 아시아 언어도 시간이 걸립니다.

마지막으로, 아마도 아마도 당신이 겪고있는 것 일 것입니다. 문자 (또는 글리프)는 일반적으로 더 복잡합니다. 이는 캐릭터를 렌더링하는 데 더 많은 시간을 의미합니다. 글꼴에 대해서는 OpenGL / D3D를 사용하는 비디오 보드로 수행 할 수 있지만 그렇게 좋지는 않습니다. MS-Windows에서는 글꼴 품질이 좋지만 품질이 떨어집니다. 따라서 대부분 프로세서에서 수행합니다.

마지막으로주의해야 할 점이 있지만, Win7은 기본적으로 창 가장자리를 반투명하게 만듭니다. 문제를 더할 수 있습니다. 그러나 렌더링의이 부분은 비디오 보드의 가속화 된 2D / 3D 기능으로 수행됩니다.


-1

PC에서 멀티 바이트 문자를 렌더링하는 경우 문자를 처리하기 위해 둘 이상의 명령을 수행해야하므로 속도가 느려집니다.

64 비트 버전은 한 번의 호출에서 64 비트 이름을 가져 와서 한 번의 호출로 처리하여 1 번의 호출 = 3 번의 호출에 저장할 수 있습니다.

32 비트 버전은 첫 32 비트, 다른 32 비트에서 작동 한 다음 두 작업을 모두 관리해야합니다.

3 호출에서 64 비트 이름을 가져 와서 3 호출로 처리하고 3 호출 = 9 호출에 저장하십시오.


캐릭터 페치 및 저장은 처리의 일부에 지나지 않습니다.
vonbrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.