2010-10-11 17 views
5

Başlığın dediği gibi, normal bir işleve kıyasla, dll işlevlerini çağırırken mükemmel bir hit var mı? Dll dlopen tarafından yüklenecektir. DÜZENLEME: Zaman dlsym Yoksay, çünkü her işlev için yalnızca bir kez yaparım.DLL işlevlerini kullanarak herhangi bir mükemmel darbe var mı?

+1

linux altında DLL olarak adlandırmayın. Bu paylaşılan bir nesnedir. Paylaşılan nesnenin yüklenmesi biraz zaman alır, ancak yüklendikten sonra normal işlevlerden hiçbir farkı olmamalıdır. – Vinzenz

cevap

5

Aramalar ölçmek için, bu yüzden hafif bir performans isabet yoktur.

Yalnızca bunları performans açısından kritik bir iç döngüde ve bunları oluşturduktan sonra kullanırsanız endişelenmelisiniz.

+0

Tamam. Profil yapacağım! : D – nakiya

0

Evet, bir performans isabeti var. Fonksiyonun adresini almak için bir dlsym çağrısı yaparsınız ve sonra bu adresle işlevi çağırırsınız. Aynı modülden bir işlev çağrısı ile karşılaştırıldığında bir dlsym çağrısı olduğu için, daha yavaş olmalıdır. Ne kadar önemli? Değişir. Bilmenin tek yolu bunu ölçmektir.

+0

Haklısınız. Ama benim durumumda, her fonksiyon için programın ömrü boyunca sadece bir kere 'dlsym' yapıyorum. Ayrıca, işlevi çağırmak için işlev işaretçileri kullanıyorum. Peki ya o zaman? – nakiya

+0

@nakiya Bu durumda, çağrılan işlev statik olarak, yani satır içi, prosedürler arası eniyileme, sabit yayılma ve benzerleri ile bağlantılıysa, yalnızca sahip olduğunuz optimizasyon fırsatlarını kaybedersiniz. Başka bir deyişle, aynı modülün bir işlevini bir işlev işaretçisi aracılığıyla çağırmaktan gerçekten farklı değildir. – usta

0

öğrenmek için en iyi yolu sadece adres ve bunları satır içi olamaz derleyici tarafından dolaylı vardır ... DLL işlevlerin

İlgili konular