2014-11-18 21 views
11

ASCII metninin yaklaşık 10 MB çıktısını veren bir etkileşimli program çalıştırıyorum [düzenleme: muhtemelen 100 MB'a yakın). Emacs kabuk modu (Aquamacs) içindeki performans kabul edilemeyecek kadar yavaştır ve bunu yapmak için saatler gerekir. Bazı şeyleri hızlandıran arabellek-devre dışı bırak komutunu çalıştırdım, ama yine de çok yavaş.Hızlı emacs kabuk modu?

Arabellek penceresi gizli olan programı çalıştırmayı denedim, ancak program bitti ve arabelleği yeniden seçtiğimde, çıktının çıkması için hala saat beklemem gerekiyor.

Performansı kabul edilebilir hale getirmek için emacs verebileceğim bir komut var mı? Kabuk modunun bu kadar yavaş olmasının bile nasıl mümkün olduğunu anlamıyorum: bu, 64-bit modern çok çekirdekli CPU'lar ve SSD ile 32 GB çok çekirdekli bir makinedir.

+1

Durumunuzla ilgili ayrıntıları verebilir misiniz, en önemlisi, bu programı nasıl çalıştırıyorsunuz? Örneğin. 'M-x derlemesi' veya 'M-x shell' tamponu veya ... ile mi? – Stefan

+0

M-x kabuklu bir arabellek oluşturuyorum. Arabellekte arabelleği devre dışı bırak-geri al. Tamponun içinde lldb'yi çalıştırıyorum ve lldb içinde programımı çalıştır. Geliştirme aşamasında olduğu kadar çok baskı yapıyor ve çıktıyı izlemek istiyorum; Bu yüzden de etkileşimli olması gerekiyor. Bu, emacs altında geliştirmenin ortak bir normal yoludur - kabuk modunun avantajlarından biridir, her zaman ayrı günlük dosyalarına ihtiyacınız yoktur. Emacs gülünç, yavaşça yavaşça koşma dışında iyi çalışır. – kdog

cevap

1

comint-move-point-for-output ve comint-scroll-show-maximum-output değişkenlerini nil olarak ayarlayın. Bu, arabelleğin sürekli olarak çıkışın sonuna kadar kaymasını önler; bu da sık tekrarlanma gerektirir.

+0

Henüz denemedim, çıktı yazdırırken gerekip gerekmediğinden emin değilim. Ancak, tampon penceresi çıktı sonunu göstermediğinde bile çıktı yavaş olur. Mesela, şu anda tampon, yaklaşık 2.000.000 satırında olduğumu gösteriyor ve çıkış, yaklaşık 2.200.000 satırdan bekletiliyor. Görebildiğim tek şey, kaydırma çubuğu göstergesinin yavaşça yukarı doğru hareket etmesidir. Hiçbir şey yeniden görüntülenmiyor. Her ne kadar belki de bu değer 50 MB'a 10 MB'den daha yakındır. – kdog

+0

Bu durumda, yapabileceğiniz en iyisini yaptığınızı düşünüyorum. Kaydırma çubuğunu ve mod satırı yüzdesini güncelleyebilmesi için çıktıyla uğraşmak zorundadır. Sanırım mod satırında konum ve yüzde görüntülemek için maksimum arabellek boyutunu söyleyen bir değişken var, ama ne olduğunu hatırlayamıyorum. – Barmar

+3

Teşekkürler. Emacs tutkunlarının web gezintisi gibi kimsenin istediği veya ihtiyaç duymadığı aptalca özellikler üzerinde tüm zamanlarını geçiriyor gibi görünmesi ve insanların (programlama) için emacs kullanabileceği temel araçların buggy veya lapaçık olması beni çok sinirlendiriyor. Hala iyi bir C++ modu yok, örneğin, kurulumu imkansız olan ve gerçekten çalışmayan (benim tecrübemde) sadece 50 farklı paket. Bir web tarayıcısına yerleştirmek istiyorlarsa, iyi ama İLK temel işlerin çalışmasını sağlar: kod tarama, program geliştirme, vb. – kdog

1

Etkileşimli programınız kabuk modunda kabuk komut dosyası olarak çalışıyor mu?

Kabuk işlemini, bir kabuk (emacs içinde kabuk modu değil) doğrudan çatallamak mümkün olabilir mi, daha sonra emacs, sonuçları tamamlandığında yüklemek mümkün mü?

+2

Önceki yoruma bakın. Programımı her zaman emacs sorunlarıyla uğraşmak için yeniden yazabilirdim, ancak tercih etmemeyi tercih ederim. 30 veya 40 yıllık bir gelişmeden sonra, emaclerin makul derecede hızlı kabuk modunu yapmanın bir yolunu beklerdim. – kdog