Vakaların büyük çoğunluğunda, algoritmalardaki iyileştirmeler, optimizasyondaki iyileştirmeden daha büyük bir fark yaratır. Algoritmalar aynı zamanda düşük seviyeli optimizasyonlardan daha taşınabilirdir. Tavsiyem, önbellek yeniden kullanımı, aşırı kopyalardan veya iletişimden kaçınmak, dosya sistemine aklı başında davranmak ve kayan nokta çekirdeklerinin vektörleştirme için yeterli ayrıntı düzeyine sahip olmasını sağlamak için bellek düzeniyle ilgili en iyi uygulamaları takip etmektir. Bazen bu kabul edilebilir derecede yüksek bir "tepe" fraksiyonuna ulaşmak için yeterlidir (bu işlem için).
Önemli olduğunu düşündüğünüz (veya profilleyerek önemli olduğunu düşündüğünüz) işlemler için her zaman bir performans modeli çizin. Ardından, yüksek düzeyde ayarlanmış bir uygulamanın neler sunabileceğini tahmin etmek için performans modelini kullanabilirsiniz. Hızlandırmanın buna değer olduğuna karar verirseniz (yapabileceğiniz diğer şeylere göre), optimizasyonu yapın.
Belki de en zor zorluk, daha sonra API'yı değiştirmeye gerek kalmadan optimize edebilmeniz için yüksek seviyeli, önemli (bu kodlara çok sayıda kodun bağlı olacağı anlamında) arayüzler ve veri yapıları tasarlamaktır. Belirli optimizasyonların ve genel yönergelerin aksine, bunu deneyimler dışında nasıl öğreteceğimi bilmiyorum. Performansa duyarlı açık kaynaklı yazılımlarla çalışmak yardımcı olur. Herhangi bir API kararında olduğu gibi, sorun alanını anlamak önemlidir.