[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Font loading extremely slow with the UTF-8 locale



Hello,

I tried this with Sid version, Brandens preview packages and Daniels
development tree. In all cases, I noticed a significantly high
(gigantic) CPU usage when applications tried to load the Unicode
equivalents of their fonts. For example, Icewm and XChat1.9 need 5..15
seconds (depending on the theme) to start. Once they started, they work
fine. And normaly, with an latin locale, they start about 10 times
faster. So could anyone enlighten me about what is going on?

Example from the strace log:


open("/usr/X11R6/lib/X11/locale/locale.dir", O_RDONLY) = 6
fstat64(6, {st_mode=S_IFREG|0644, st_size=28105, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000c000
read(6, "#\t$Xorg: locale.dir,v 1.3 2000/08/17 19:46:48 cpqbld Exp $\n#\n#\tThis file contains locale database file names\n#\tThe first"..., 4096) = 4096
read(6, "LC_LOCALE\t\t\tfr_CA.ISO8859-1\niso8859-15/XLC_LOCALE\t\t\tfr_CA.ISO8859-15\niso8859-1/XLC_LOCALE\t\t\tfr_CH.ISO8859-1\niso8859-15/X"..., 4096) = 4096
read(6, "VISCII\niso8859-1/XLC_LOCALE\t\t\twa_BE.ISO8859-1\niso8859-15/XLC_LOCALE\t\t\twa_BE.ISO8859-15\nmicrosoft-cp1255/XLC_LOCALE\t\tyi_U"..., 4096) = 4096
read(6, "TF-8/XLC_LOCALE\t\t\tlo_LA.UTF-8\nen_US.UTF-8/XLC_LOCALE\t\t\tlt_LT.UTF-8\nen_US.UTF-8/XLC_LOCALE\t\t\tlv_LV.UTF-8\nen_US.UTF-8/XLC_"..., 4096) = 4096
read(6, "n_IE.ISO8859-15\niso8859-1/XLC_LOCALE:\t\t\ten_JM.ISO8859-1\niso8859-1/XLC_LOCALE:\t\t\ten_NZ.ISO8859-1\niso8859-1/XLC_LOCALE:\t\t\t"..., 4096) = 4096
read(6, "SO8859-15\niso8859-1/XLC_LOCALE:\t\t\tnn_NO.ISO8859-1\niso8859-1/XLC_LOCALE:\t\t\tnn_NO.ISO8859-15\niso8859-1/XLC_LOCALE:\t\t\tny_NO"..., 4096) = 4096
close(6)                                = 0
munmap(0x4000c000, 4096)                = 0
writev(3, [{"1\2\21\0\1\0<\0", 8}, {"-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso10646-1", 60}], 2) = 68
read(3, "\1\361\r\t\20\0\0\0\1\0c\10\220md\10\0\20\0\0\0\0\0\0\220md\10<\0\0\0", 32) = 32
readv(3, [{"<-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso10646-1\0\0\0", 64}, {"", 0}], 2) = 64
writev(3, [{"1\2\21\0\1\0<\0", 8}, {"-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso10646-1", 60}], 2) = 68
read(3, "\1\361\16\t\20\0\0\0\1\0c\10\220md\10\0\20\0\0\0\0\0\0\220md\10<\0\0\0", 32) = 32
readv(3, [{"<-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso10646-1\0\0\0", 64}, {"", 0}], 2) = 64
writev(3, [{"2\2\21\0d\0<\0", 8}, {"-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso10646-1", 60}], 2) = 68
read(3, "\1<\17\tL\0\0\0\376\377\1\0\0\0\376\377\370\377\0\0\251\1\0\0\1\0\r\0\r\0\17\0", 32) = 32
read(3, "\5\0\0\0007 Ad\0\0\377\0\0\0\33\0\0\0\"\0\v\0\3\0\1\0\0\0", 28) = 28
read(3, "\256\0\0\0I\1\0\0@\0\0\0J\1\0\0\257\0\0\0K\1\0\0\260\0\0\0\307\0\0\0\261\0\0\0\321\0\0\0\262\0\0\0\303\0\0\0\263\0\0\0\f\0\0\0;\0\0\0x\0\0\0\264\0\0\0K\0\0\0\265\0\0\0K\0\0\0\266\0\0\0L\1\0\0\267\0\0\0F\0\0\0\270\0\0\0\332\0\0\0\271"..., 216) = 216

Etc... And:

# grep iso10646 log | wc -l
    1526

Too many lookups, IMHO. Same with latin1 locale:

grep 8859 log2 | wc -l
    114

Gruss/Regards,
Eduard.
-- 
>F�r einen neuen Monitor bitte hier ==>[X]<== einen Nagel einschlagen.
jetzt ist ein Nagel in der Wand, und er Beamer stahlt weiter..
(ja, richtig flache Witze...)



Reply to: