Tại sao kết xuất chuỗi nhân vật đa nhân chậm đến mức khó tin?


11

Khoảng một tuần trước, tôi nhận ra rằng danh sách tệp trong HayTorrent sẽ bị treo trong vòng chưa đến một giây mỗi khi nhìn thấy một tệp có tên tệp tiếng Nhật dài. Tôi thấy nó tò mò, nhưng tôi không thực sự có thời gian để lo lắng về điều đó vào lúc đó, đặc biệt là vì nó chỉ giới hạn ở chanhTorrent.

Tuy nhiên, hôm nay tôi nhận ra rằng nó không phải là. Ví dụ, nếu tôi lưu một tệp văn bản có tên tệp ký tự đa dòng dài và mở nó trong Notepad, tôi nhận được một số kết quả lạ. Khi tôi cố gắng thay đổi kích thước cửa sổ, mọi thứ sẽ chậm lại. Tuy nhiên, tôi có thể giải phóng sự kìm kẹp của mình trên cửa sổ và xem cách con trỏ của tôi chia làm hai , một do tôi điều khiển và cái còn lại là một "con trỏ ma" vì không có từ nào tốt hơn để thực hiện chuyển động kéo mà tôi đã thực hiện ban đầu chuột. Điều này chỉ áp dụng cho tên tệp có tính chất này và tôi cũng đã thử nghiệm nó trong các ứng dụng khác ngoài Notepad và sápTorrent.

Tôi đã cố gắng tìm kiếm manh mối về những gì gây ra hành vi kỳ lạ này, nhưng tôi không thể tìm thấy bất cứ điều gì. Có ai ở đây có bất kỳ ý tưởng những gì đang xảy ra?

Thật không may, tôi không thể chụp ảnh màn hình này vì có vẻ như tất cả các ứng dụng ảnh chụp màn hình bị treo cho đến khi hoàn tất thay đổi kích thước trước khi chụp ...

Chỉnh sửa: Tôi đã quay một video chứng minh vấn đề. Tôi không chắc liệu điều này có giúp xác định nguyên nhân hay không nhưng ít nhất nó sẽ tốt hơn lời giải thích của tôi ở trên:

https://vimeo.com/58619918

Chỉnh sửa 2: Đây là một tệp mẫu theo yêu cầu: Lưu ý rằng đó chỉ là một tệp trống có tên tệp đa dòng dài: http://goo.gl/bgnGP (Và đối với những bạn có trình duyệt không thể xử lý tên tệp, đây là tệp zip: https://dl.dropbox.com/u/55495248/multibyte.zip )


Lúc đầu tôi định tải nó lên YouTube, nhưng dường như không thể không "nâng cấp" tài khoản của bạn để hiển thị tên thật của bạn. Không, cám ơn. Tôi hy vọng Vime sẽ ổn.
Merigrim

Bạn có thể cho chúng tôi biết một số chi tiết về máy tính? Đặc biệt, card màn hình bạn sử dụng (hoặc đó là các bo mạch video bên trong chip? Các trình điều khiển video có được cập nhật không? Các vấn đề kết xuất có thể do video chứ không phải Windows ....
woliveirajr 5/213

1
@woliveirajr Chắc chắn rồi. Đây là một DxDiag.txt bị tước (chứa thông tin về CPU, GPU, bộ nhớ, v.v.): pastebin.com/eYvS8mGL Tôi nghĩ rằng đã một hoặc hai tháng kể từ khi tôi cập nhật trình điều khiển video của mình, tôi sẽ thử.
Merigrim

2
Hãy thử câu trả lời đầu tiên cho câu hỏi superuser.com/questions/371282/ và xem nó có giúp ...
woliveirajr

1
và cũng (trong cùng một liên kết ở trên) lưu ý về support.microsoft.com/kb/2505438
woliveirajr

Câu trả lời:


1

Tôi có thể giải thích cách xử lý Unicode, nhưng tôi thực sự không thể trả lời trực tiếp câu hỏi của bạn. Tôi đã chậm chạp trong lần viết đầu tiên, nhưng một khi đã xong, nó lại nhanh chóng trở lại ...

Unicode bao gồm những gì chúng ta gọi là máy bay. Máy bay có 256 ký tự. Trong nhiều tình huống, phông chữ sẽ xử lý một mặt phẳng, một phần để tránh các tệp rất lớn nhưng cũng vì nó đủ cho nhiều ngôn ngữ (tiếng Anh, tiếng Pháp, tiếng Đức ...). Tuy nhiên, ngôn ngữ châu Á sử dụng phông chữ lớn hơn bao phủ nhiều mặt phẳng. Đối với một bộ ký tự tiếng Nhật hoàn chỉnh, bạn sẽ nhận được, nếu tôi đúng, khoảng 10 mặt phẳng. Tiếng Trung là nhiều hơn (đặc biệt là tiếng Trung Quốc truyền thống!)

Khi kết xuất với các phông chữ như vậy, bạn phải chọn phông chữ tương ứng (nếu một phông chữ không đủ để xử lý tất cả các ký tự, hệ điều hành sẽ chuyển đổi giữa các phông chữ cho bạn; điều đó nằm trong mui xe, nhưng điều đó sẽ tốn thời gian. Thêm vào đó, lần đầu tiên hệ thống ghi bằng phông chữ đó, nó cần tải nó từ đĩa. Ngôn ngữ châu Á có phông chữ lớn, điều đó cũng mất thời gian.

Cuối cùng, và đó có lẽ là nhiều khả năng những gì bạn đang gặp phải, các ký tự (hoặc glyphs) thường phức tạp hơn. Điều đó có nghĩa là nhiều thời gian hơn để kết xuất các nhân vật. Mặc dù điều đó có thể được thực hiện bởi bảng video với OpenGL / D3D, nhưng đối với phông chữ, điều đó không tốt lắm. Bạn mất rất nhiều chất lượng (mặc dù chất lượng phông chữ trong MS-Windows ...) Vì vậy, nó thường được bộ xử lý thực hiện.

Một lưu ý cuối cùng, mặc dù tôi thực sự nghi ngờ đó là một mối quan tâm, mặc định Win7 làm cho các cạnh cửa sổ trở nên trong suốt. Nó có thể là thêm vào vấn đề. Tuy nhiên, phần kết xuất này chắc chắn được thực hiện với các chức năng 2D / 3D được tăng tốc trên bảng video của bạn.


-1

Nếu máy tính của bạn hiển thị một ký tự đa nhân, nó sẽ chạy chậm hơn vì có thể nó phải thực hiện nhiều hơn 1 lệnh để tạo ký tự.

Một phiên bản 64 bit có thể nhận được tên 64 bit trong 1 cuộc gọi, xử lý nó trong 1 cuộc gọi và lưu trữ trong 1 cuộc gọi = 3 cuộc gọi.

Phiên bản 32 bit sẽ phải hoạt động với 32 bit đầu tiên, sau đó là 32 bit còn lại và sau đó quản lý cả hai hoạt động:

nhận được tên 64 bit trong 3 cuộc gọi, xử lý nó trong 3 cuộc gọi và lưu nó trong 3 cuộc gọi = 9 cuộc gọi.


Việc tìm nạp và lưu trữ ký tự chỉ là một phần rất nhỏ của quá trình xử lý được thực hiện.
vonbrand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.