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

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: