ESP32'de Pascal, C'den yavaş mı? Derlemeci farkı

Pascal'ın ESP32'de C kadar hızlı çalışıp çalışmadığı sorusu ilk bakışta basit görünse de cevabı derlemeci stratejisinde saklı. Yapılan karşılaştırmada, aynı kayan nokta algoritması Pascal ile yazıldığında başlangıçta C versiyonundan yedi kat daha yavaş çalışıyor. Sebep ise Xtensa FPU'da donanım bölme işleminin olmaması ve derlemecilerin farklı yaklaşımları: Free Pascal Compiler yazılım emülasyon kullanırken (~240 döngü), GCC ROM tabanlı karşılıklı rutini tercih ediyor (~40 döngü).

Her iki dilde de bölme işlemi pahalı bir operasyon, ama derlemeci bu maliyeti nasıl karşıladığı performansı belirliyor. Pascal tarafında tek satırık bir deklarasyon, GCC'nin hızlı ROM rutinine erişimi sağlıyor. Bunu eklediğinde ve iki ek optimizasyon yapıldığında Pascal programı C'yi geçiyor.

Praktik olarak, eğer ESP32'de Pascal kullanmayı düşünüyorsan Free Pascal Compiler'ın Xtensa desteğine sahip olduğunu bilmek yeterli. Ancak kritik performans gerektiren uygulamalarda derlemeci düzeyinde optimizasyonları kontrol etmen gerekebiliyor. Bölme gibi pahalı işlemlerde, derlemecinin hangi yöntemi seçtiğini disassembly ile doğrulamak zaman kazandırır. Pascal'ın niche alanlarda kullanılmasının bir sebebi de bu tür ince kontrol imkanları, modern diller sıkça bu detayları gizliyor.

konu hakkında tepkinizi verebilirsiniz