|
From: Harald K. <ko...@ta...> - 2008-05-23 12:55:58
|
Hi,
using utf-8 locale on both openSUSE 10.3 and 11.0-beta enormously slows down gnuplot using X11 output.
the full story can be found here:
https://bugzilla.novell.com/show_bug.cgi?id=391069
this is a simple benchmark with pure opensuse 11.0-factory (beta3plus?) :
# for i in {1..100} ; do echo "plot sin(x+$i/10.) t '$i'" ; done | LC_ALL=de_DE time gnuplot
0:01.77 real, 0.06 user, 0.01 sys, 4% cpu
# for i in {1..100} ; do echo "plot sin(x+$i/10.) t '$i'" ; done | LC_ALL=de_DE.utf-8 time gnuplot
0:08.99 real, 0.08 user, 0.02 sys, 1% cpu
with good graphics card drivers (e.. nv/nvidia) the difference might be even
worse, because my fglrx in IBM T60 for ATI X1400 shows a significant slowdown
with increasing window size while "nv" has constant performace for small/large
plot windows -- but that'll be another bug report... ;-)
I traced the X11 protocol for this benchmark using "xmon" and found two
significant differences:
- with utf-8 there are _many_ ListFonts and ListFontsWithInfo requests, with
de_DE there are none:
# grep -c ListFont gp.xmon.de_DE*
gp.xmon.de_DE:0
gp.xmon.de_DE.utf-8:15600
this is a historgram over all ListFonts request pattern:
1900 "-*-verdana-medium-r-normal--16-*-*-dejavu*sans-medium-r-normal--16-*-"
1900 "-*-sazanami*mincho-medium-r-normal--16-*-*-mincho-medium-r-normal--16"
300 "-*-medium-r-normal--16-*-ISO8859-1"
200 "-etl-fixed-medium-r-normal--16-160-72-72-c-80-iso8859-1"
200 "-*-medium-r-normal--16-*-JISX0201.1976-0"
100 "-xos4-terminus-medium-r-normal--16-160-72-72-c-80-iso8859-13"
100 "-sony-fixed-medium-r-normal--16-120-100-100-c-80-jisx0201.1976-0"
100 "-jis-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1983-0"
100 "-isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0"
100 "-etl-fixed-medium-r-normal--16-160-72-72-c-80-koi8-r"
100 "-etl-fixed-medium-r-normal--16-160-72-72-c-80-iso8859-9"
100 "-etl-fixed-medium-r-normal--16-160-72-72-c-80-iso8859-7"
100 "-etl-fixed-medium-r-normal--16-160-72-72-c-80-iso8859-5"
100 "-etl-fixed-medium-r-normal--16-160-72-72-c-80-iso8859-4"
100 "-etl-fixed-medium-r-normal--16-160-72-72-c-80-iso8859-3"
100 "-etl-fixed-medium-r-normal--16-160-72-72-c-80-iso8859-2"
100 "-efont-fixed-medium-r-normal--16-160-75-75-c-80-iso8859-15"
100 "-efont-biwidth-medium-r-normal--16-160-75-75-p-80-iso10646-1"
100 "-daewoo-gothic-medium-r-normal--16-120-100-100-c-160-ksc5601.1987-0"
100 "-*-medium-r-normal--16-*-KSC5601.1987-0"
100 "-*-medium-r-normal--16-*-KOI8-R"
100 "-*-medium-r-normal--16-*-JISX0208.1983-0"
100 "-*-medium-r-normal--16-*-ISO8859-9"
100 "-*-medium-r-normal--16-*-ISO8859-7"
100 "-*-medium-r-normal--16-*-ISO8859-5"
100 "-*-medium-r-normal--16-*-ISO8859-4"
100 "-*-medium-r-normal--16-*-ISO8859-3"
100 "-*-medium-r-normal--16-*-ISO8859-2"
100 "-*-medium-r-normal--16-*-ISO8859-15"
100 "-*-medium-r-normal--16-*-ISO8859-14"
100 "-*-medium-r-normal--16-*-ISO8859-13"
100 "-*-medium-r-normal--16-*-ISO10646-1"
100 "-*-medium-r-normal--16-*-GB2312.1980-0"
100 "-*-medium-r-normal--16-*-*-ISO8859-14"
100 "-*-medium-r-normal--16-*-*-*-ISO8859-14"
100 "-*-medium-r-normal--16-*-*-*-*-ISO8859-14"
100 "-*-medium-r-normal--16-*-*-*-*-*-ISO8859-14"
100 "-*-medium-r-normal--16-*-*-*-*-*-*-ISO8859-14"
while the actual request sequence looks like this:
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-1"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-1"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-1"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-2"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-3"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-4"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-5"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-KOI8-R"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-7"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-9"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-13"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-14"
"-*-medium-r-normal--16-*-*-ISO8859-14"
"-*-medium-r-normal--16-*-*-*-ISO8859-14"
"-*-medium-r-normal--16-*-*-*-*-ISO8859-14"
"-*-medium-r-normal--16-*-*-*-*-*-ISO8859-14"
"-*-medium-r-normal--16-*-*-*-*-*-*-ISO8859-14"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-ISO8859-15"
"-*-sazanami*mincho-medium-r-normal--16-* -*-mincho-medium-r-normal--16"
"-*-verdana-medium-r-normal--16-* -*-dejavu*sans-medium-r-normal--16-*-"
"-*-medium-r-normal--16-*-JISX0208.1983-0"
[ ... ]
- with utf-8 all strings are drawn one character at a time while de_DE draws a
label string at once:
without utf8:
grep string: gp.xmon.de_DE
text item 8 string: " 1"
text item 8 string: "-10"
text item 8 string: "-5"
text item 8 string: " 0"
text item 8 string: " 5"
text item 8 string: " 10"
text item 8 string: "1"
text item 8 string: "-11.5623, -1.12474"
with utf8 just for the last string (but that's still merged into a single:
text item 8 string: "-"
text item 8 string: "1"
text item 8 string: "1"
text item 8 string: "."
text item 8 string: "5"
text item 8 string: "6"
text item 8 string: "2"
text item 8 string: "3"
text item 8 string: ","
text item 8 string: " "
text item 8 string: "-"
text item 8 string: "1"
text item 8 string: "."
text item 8 string: "1"
text item 8 string: "2"
text item 8 string: "4"
text item 8 string: "7"
text item 8 string: "4"
here is a [top of] histogram over all X11 requests:
here is a [top of] histogram over all X11 requests:
harald > grep REQUEST: gp.xmon.de_DE | sort | uniq -c | sort -nr| head
3600 ............REQUEST: PolyLine
1948 ............REQUEST: PolyText8
700 ............REQUEST: ChangeGC
502 ............REQUEST: ChangeWindowAttributes
128 ............REQUEST: CreateGC
126 ............REQUEST: FreeGC
103 ............REQUEST: OpenFont
102 ............REQUEST: CloseFont
101 ............REQUEST: MapWindow
101 ............REQUEST: ConfigureWindow
harald > grep REQUEST: gp.xmon.de_DE.utf-8 | sort | uniq -c | sort -nr| head
9656 ............REQUEST: PolyText8
6200 ............REQUEST: ListFonts
3600 ............REQUEST: PolyLine
1600 ............REQUEST: ListFontsWithInfo
701 ............REQUEST: ChangeGC
502 ............REQUEST: ChangeWindowAttributes
128 ............REQUEST: CreateGC
126 ............REQUEST: FreeGC
103 ............REQUEST: OpenFont
102 ............REQUEST: GetInputFocus
are you interested in the full logs ?
-rw-r--r-- 1 harald users 3.3M May 23 11:14 gp.xmon.de_DE
-rw-r--r-- 1 harald users 8.2M May 23 11:15 gp.xmon.de_DE.utf-8
-rw-r--r-- 1 harald users 94K May 23 11:14 gp.xmon.de_DE.bz2
-rw-r--r-- 1 harald users 184K May 23 11:15 gp.xmon.de_DE.utf-8.bz2
Harald
--
"I hope to die ___ _____
before I *have* to use Microsoft Word.", 0--,| /OOOOOOO\
Donald E. Knuth, 02-Oct-2001 in Tuebingen. <_/ / /OOOOOOOOOOO\
\ \/OOOOOOOOOOOOOOO\
\ OOOOOOOOOOOOOOOOO|//
Harald Koenig \/\/\/\/\/\/\/\/\/
Inst.f.Theoret.Astrophysik // / \\ \
ko...@ta... ^^^^^ ^^^^^
|