2011-08-24 14 views
5

Çok sayıda GNU Make-dosyamız var. Herhangi bir performans darboğazlarını tanımlamak için derleme sırasında kullanılan her hedefi zamanlamak istiyorum. Bunu uygun ve otomatik bir şekilde yapmak için bir araç veya teknik var mı?Performans nasıl analiz edilir GNU Dosyaları oluştur

Bu sonuçlar, yapı değiştikçe ve büyüdüğünde (ancak zaten büyük ve karmaşık olan) performans faktörüne göre sekmeleri tutmak için ayrıştırmak isteyebilir.

cevap

4

Ben

Bir kabuk ama kere onun yürütme çağırır ve hedef adıyla yerde bir araya sonucu yazar şeyle kabuğu yerini alabilir ... Daha önce burada bu soruyu görmüştüm. Her bir hedef sadece bir kez (veya koşmayı reddeder) yapılacaktır, böylece tek yapmanız gereken zamanı bir araya getirmek.

Çok ham örnek: Birlikte kez eklemek istemiyorsanız siz de her nasılsa tek her bir hedef için komutları katılmak zorunda,

make 

ile

make SHELL='echo [email protected]: && time sh' 

yerine komut. Bunu yapmanın bir yolu, Makefile'yi önceden işlemek, ancak çeşitli nedenlerden ötürü, Makefiller'in en kolayı olanlardan herhangi biri için işe yaramamaktır.

E.g.

, bu yönde çok kaba bir bıçaktır.

Çeşitli alternatif yaklaşımlar vardır, ancak bence tek gerçek çözüm bu özelliği eklemektir; GNU make çok portatif C ile yazılmıştır, bu yüzden yapılması zor olmamalıdır.

+0

'SHELL' ... zeki –

1

Kutunun dışında düşünmek: özyinelemeli kullanarak değerli elektronları boşa harcayarak, yani kuralların alt dizinlere koyulduğu ve tekrar arama yapabildiğiniz bir şey var mı? O zaman senin sorunun. Bir satın alma işlemi, 2 büyüklük derecesiyle daha hızlı olabilir.

ayrıntıları için bkz Recursive make considered harmful

0

her komut çalıştıran, çünkü yanlış kullanılan değişkenlerin kaç kere nasıl çalıştığını anlamak yardımcı olacaktır şu:: =

make SHELL='/bin/sh -x' 
0

bir Profile çalışıyorsanız

https://github.com/gojuno/make-profiler

Bu hareket: statik Makefile, makyaj profilcisine de bakabilirsiniz 'un etrafındaki bir sarıcı gibi, Makefile ön işlemlerini kaydeder, günlükleri toplar ve zamanlama bilgisiyle bir çağrı grafiği çizer. Uzun süredir çalışan bir veri işleme hattı oluşturuyorsanız, özellikle yararlıdır.

İlgili konular