Re: Midnight Commander + file(1) sorunu
Recai Oktaş yazmış:
> Merhaba,
>
> Bir kaç zamandır dikkatimi çeken bir sorunla bugün ilgilenme fırsatı
> buldum. Benzer sorundan muzdarip olanlara da yararlı olabilir düşüncesiyle
> buraya yazayım dedim.
>
> Midnight Commander, nam-ı diğer "mc" sık kullandığım bir programdır. Bu
> sık kullandığım programda en sık yaptığım işlem de F3 (veya Enter) tuşu ile
> dosyalara bakmak veya F4 ile düzenlemek. Gel gelelim makinede tam tarihini
> hatırlayamadığım bir güncellemeden beri mc'deki bu göz atma ve düzenleme
> işlemlerinde, özellikle büyük dosyalarda, olağanüstü bir yavaşlık oluyordu.
> Örnek vermem gerekirse, 170K civarı bir dosyaya (1.4GHz'lik Pentium M
> işlemcili makinede) F3 ile bakınma işlemi yaklaşık 9 sn sürüyordu.
>
> strace(1) ile programın ne iş çevirdiğini inceledim ve bu bakınma/düzenleme
> işlemlerinde mc'nin dosya tipini tayin etmek için file(1) komutunu fork
> ettiğini farkettim. Yani (en azından bu makinede) sorun file(1) komutunda:
>
> $ du -h iri.tex
> 172K iri.tex
>
> $ file --version
> file-4.21
> magic file from /etc/magic:/usr/share/file/magic
>
> $ time file iri.tex
> iri.tex: LaTeX 2e document text
>
> real 0m9.232s
> user 0m8.865s
> sys 0m0.016s
>
> Görüldüğü gibi file(1) kararını ~9 s'de veriyor! Süreç zamanı ağırlıklı
> olarak "user" tarafında olduğundan bunun çekirdek ile alakalı olmadığını
> düşünebiliriz. Sorun Türkçe'ye özel mi?
>
> $ (export LC_ALL=en_US.UTF-8; time file iri.tex)
> iri.tex: LaTeX 2e document text
>
> real 0m3.190s
> user 0m3.092s
> sys 0m0.008s
>
> Biraz öyle görünüyor. Devam edelim...
>
> $ (export LC_ALL=C; time file iri.tex)
> iri.tex: LaTeX 2e document text
>
> real 0m0.076s
> user 0m0.060s
> sys 0m0.000s
>
> Sonuç:
>
> $ echo "9.232/0.076" | bc
> 121
>
> 121 katlık bir fark! Öyle anlaşılıyor ki file(1)'ın bu yeni sürümlerinde
> öncelikle UTF8 ile alakalı ve Türkçe işin içine girdiğinde katmerleşen bir
> sorun var. Burada verdiğim rakamları (mümkünse farklı dağıtımlarda) siz de
> doğrularsanız memnun olurum, hata raporu geçmeden önce emin olalım. Geçici
> bir çözüm olarak aşağıdaki adımları uyguladım:
>
> $ cp /usr/bin/file /usr/bin/file.exec
> $ cat >/usr/bin/file
> #!/bin/sh
> LC_ALL=C exec /usr/bin/file.exec "$@"
> (bu noktada Ctrl-D tuşluyoruz)
>
> Tabii bu çözümün yan etkileri olacaktır mutlaka. Yine de önceden 9 s'de
> açılan bir dosyayı saniye altında açmak için buna değer...
>
etch'deki sürüm 4.17'de sorun yok gibi görünüyor.
@debian:~$ file --version
file-4.17
magic file from /etc/magic:/usr/share/file/magic
@debian:~$ ls -lh mbox
-rw------- 1 mert mert 209K Dec 22 20:16 mbox
@debian:~$ time file mbox
mbox: UTF-8 Unicode mail text
real 0m0.066s
user 0m0.048s
sys 0m0.008s
@debian:~$ (export LC_ALL=en_US.UTF-8; time file mbox)
mbox: UTF-8 Unicode mail text
real 0m0.062s
user 0m0.040s
sys 0m0.016s
@debian:~$ (export LC_ALL=C; time file mbox)
mbox: UTF-8 Unicode mail text
real 0m0.068s
user 0m0.044s
sys 0m0.008s
@debian:~$
Reply to: