Was going to log a new bug, but this one looks very similar. Heres the details I found.
Peter try setting LANG to something matching under /usr/lib/locale and run your test to see if we have the same bug. probably en_CA.utf8 ---------------------------------------------------------------------------- Ive noticed a small performance hit arising from locale settings. Ubunutu (gnome-language-selector) sets lang in a format like: LANG=en_AU.UTF-8 LANGUAGE=en_AU:en LC_CTYPE="en_AU.UTF-8" LC_NUMERIC="en_AU.UTF-8" LC_TIME="en_AU.UTF-8" LC_COLLATE="en_AU.UTF-8" LC_MONETARY="en_AU.UTF-8" LC_MESSAGES="en_AU.UTF-8" LC_PAPER="en_AU.UTF-8" LC_NAME="en_AU.UTF-8" LC_ADDRESS="en_AU.UTF-8" LC_TELEPHONE="en_AU.UTF-8" LC_MEASUREMENT="en_AU.UTF-8" LC_IDENTIFICATION="en_AU.UTF-8" When binaries are executed, the LANG is looked up in /usr/lib/locale, which on my system looks like: [EMAIL PROTECTED]:/usr/lib/locale$ ls en_AU.utf8 en_DK.utf8 en_IE.utf8 en_PH.utf8 en_ZA.utf8 en_BW.utf8 en_GB.utf8 en_IN en_SG.utf8 en_ZW.utf8 en_CA.utf8 en_HK.utf8 en_NZ.utf8 en_US.utf8 They dont match up, en_AU.utf8 vs en_AU.UTF-8 With the default LANG, running strace across various binaries, 'ls' for example gives many messages such as: open("/usr/lib/locale/en_AU.UTF-8/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory) With LANG=en_AU.UTF-8 strace -c ls % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000062 4 14 read 0.00 0.000000 0 1 write 0.00 0.000000 0 105 77 open 0.00 0.000000 0 29 close 0.00 0.000000 0 1 execve 0.00 0.000000 0 12 12 access 0.00 0.000000 0 3 brk 0.00 0.000000 0 2 2 ioctl 0.00 0.000000 0 6 munmap 0.00 0.000000 0 1 mprotect 0.00 0.000000 0 1 _sysctl 0.00 0.000000 0 2 rt_sigaction 0.00 0.000000 0 1 rt_sigprocmask 0.00 0.000000 0 1 getrlimit 0.00 0.000000 0 42 mmap2 0.00 0.000000 0 29 fstat64 0.00 0.000000 0 2 getdents64 0.00 0.000000 0 1 fcntl64 0.00 0.000000 0 2 futex 0.00 0.000000 0 1 set_thread_area 0.00 0.000000 0 1 set_tid_address ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000062 257 91 total With LANG=en_AU.utf8, to match the directory in /usr/lib/locale strace -c ls % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- nan 0.000000 0 14 read nan 0.000000 0 3 write nan 0.000000 0 93 65 open nan 0.000000 0 29 close nan 0.000000 0 1 execve nan 0.000000 0 12 12 access nan 0.000000 0 3 brk nan 0.000000 0 2 ioctl nan 0.000000 0 6 munmap nan 0.000000 0 1 mprotect nan 0.000000 0 1 _sysctl nan 0.000000 0 2 rt_sigaction nan 0.000000 0 1 rt_sigprocmask nan 0.000000 0 1 getrlimit nan 0.000000 0 42 mmap2 nan 0.000000 0 29 fstat64 nan 0.000000 0 2 getdents64 nan 0.000000 0 1 fcntl64 nan 0.000000 0 2 futex nan 0.000000 0 1 set_thread_area nan 0.000000 0 1 set_tid_address ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000000 247 77 total Having a LANG that doesn't match a directory in /usr/lib/locale generates 10 more system calls, and 14 more errors. Testing something a bit more substantial than 'ls', heres the summary of the first process for firefox. export LANG=en_AU.UTF-8 strace -c firefox % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000684 7627 2064 total export LANG=en_AU.utf8 strace -c firefox % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000446 7550 2039 total 77 More system calls. Reporting this because every little bit of performance helps. Andrew Hendry. -- huge performance hit for -i with UTF-8 locales https://launchpad.net/bugs/75695 -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs