Pada dasarnya, abstraksi mengurangi komunikasi informasi, baik kepada pemrogram dan lapisan bawah sistem (kompiler, perpustakaan, dan sistem runtime). Dalam mendukung abstraksi, ini umumnya memungkinkan lapisan bawah untuk mengasumsikan bahwa programmer tidak peduli dengan perilaku yang tidak ditentukan, memberikan fleksibilitas yang lebih besar dalam memasok perilaku yang ditentukan.
Contoh manfaat potensial dari aspek "tidak peduli" ini adalah tata letak data. Dalam C (abstraksi rendah), kompiler lebih dibatasi dalam optimasi tata letak data. Bahkan jika kompiler dapat melihat (misalnya, melalui informasi profil) bahwa optimisasi penghindaran panas / dingin atau pembagian-salah akan bermanfaat, pada umumnya dicegah untuk menerapkannya. (Ada beberapa kebebasan dalam menentukan "seolah-olah", yaitu, memperlakukan spesifikasi secara lebih abstrak, tetapi menurunkan semua efek samping potensial menambah beban pada kompiler.)
Spesifikasi yang lebih abstrak juga lebih kuat terhadap perubahan pengorbanan dan penggunaan. Lapisan bawah kurang terkendala dalam mengoptimalkan program untuk karakteristik sistem baru atau penggunaan baru. Spesifikasi yang lebih konkrit harus ditulis ulang oleh seorang programmer atau upaya tambahan harus dilakukan oleh lapisan bawah untuk menjamin perilaku "seolah-olah".
Aspek yang menghambat kinerja dari abstraksi penyembunyian informasi adalah "tidak dapat mengekspresikan", yang biasanya ditangani oleh lapisan bawah sebagai "tidak tahu." Ini berarti bahwa lapisan bawah harus melihat informasi yang berguna untuk optimisasi dari cara lain seperti penggunaan umum, penggunaan yang ditargetkan, atau informasi profil tertentu.
Dampak dari menyembunyikan informasi juga berfungsi ke arah yang berbeda. Programer dapat lebih produktif dengan tidak harus mempertimbangkan dan menentukan setiap detail, tetapi programer mungkin memiliki lebih sedikit informasi tentang dampak dari pilihan desain level yang lebih tinggi.
Di sisi lain, ketika kode lebih spesifik (kurang abstrak), lapisan bawah sistem dapat lebih mudah melakukan apa yang diperintahkan kepada mereka karena mereka diminta melakukannya. Jika kode ditulis dengan baik untuk penggunaan yang ditargetkan, maka akan cocok dengan penggunaan yang ditargetkan. Bahasa yang kurang abstrak (atau paradigma pemrograman) memungkinkan programmer untuk mengoptimalkan implementasi dengan desain terperinci dan dengan menggunakan informasi yang tidak mudah dikomunikasikan dalam bahasa yang diberikan kepada lapisan bawah.
Seperti yang telah dicatat, bahasa yang kurang abstrak (atau teknik pemrograman) menarik ketika keterampilan dan upaya programmer tambahan dapat menghasilkan hasil yang bermanfaat. Ketika lebih banyak upaya dan keterampilan programmer diterapkan, hasilnya biasanya akan lebih baik. Selain itu, sistem bahasa yang kurang digunakan untuk aplikasi yang kritis terhadap kinerja (alih-alih menekankan upaya pengembangan atau keandalan - pemeriksaan batas dan pengumpulan sampah tidak hanya tentang produktivitas programmer tetapi tentang kebenaran, abstraksi yang mengurangi beban mental pada programmer dapat meningkatkan keandalan) akan memiliki lebih sedikit tekanan untuk meningkatkan kinerja.
Kekhususan juga bekerja bertentangan dengan prinsip jangan ulangi diri Anda karena pengoptimalan biasanya dimungkinkan dengan menyesuaikan kode untuk penggunaan tertentu. Ini jelas memiliki implikasi keandalan dan upaya pemrograman.
Abstraksi yang disediakan oleh bahasa juga dapat mencakup pekerjaan yang tidak diinginkan atau tidak perlu tanpa sarana untuk memilih abstraksi yang kurang berat. Sementara pekerjaan yang tidak perlu kadang-kadang dapat ditemukan dan dihapus oleh lapisan bawah (misalnya, batas pemeriksaan dapat diekstraksi dari badan loop dan sepenuhnya dihapus dalam beberapa kasus), menentukan bahwa itu adalah optimasi yang valid membutuhkan lebih banyak "keterampilan dan usaha" oleh kompiler.
Usia dan popularitas bahasa juga merupakan faktor penting baik dalam ketersediaan programmer yang terampil dan kualitas lapisan bawah sistem (termasuk perpustakaan yang matang dan contoh kode).
Faktor lain yang membingungkan dalam perbandingan semacam itu adalah perbedaan yang agak ortogonal antara kompilasi sebelumnya dan kompilasi just-in-time. Sementara kompilasi just-in-time dapat lebih mudah mengeksploitasi informasi profil (tidak bergantung pada programmer untuk menyediakan menjalankan profil) dan optimasi sistem khusus (kompilasi sebelumnya mungkin menargetkan kompatibilitas yang lebih luas), overhead optimasi agresif diperhitungkan sebagai bagian dari kinerja runtime. Hasil JIT dapat di-cache, mengurangi overhead untuk kode yang umum digunakan. (Alternatif optimalisasi biner dapat memberikan beberapa keuntungan dari kompilasi JIT, tetapi format distribusi biner tradisional menjatuhkan sebagian besar informasi kode sumber yang berpotensi memaksa sistem untuk mencoba melihat maksud dari implementasi tertentu.)
(Bahasa abstraksi yang lebih rendah, karena penekanannya pada kontrol programmer, mendukung penggunaan kompilasi di muka. Kompilasi install-waktu mungkin ditoleransi, meskipun pemilihan implementasi tautan-waktu akan memberikan kontrol programmer yang lebih besar. Kompilasi JIT mengorbankan kontrol yang signifikan. )
Ada juga masalah metodologi pembandingan. Upaya / keterampilan yang sama secara efektif tidak mungkin dibangun, tetapi bahkan jika itu dapat dicapai, tujuan bahasa akan membiaskan hasilnya. Jika waktu pemrograman maksimum yang rendah diperlukan, sebuah program untuk bahasa yang kurang abstrak mungkin gagal bahkan ditulis sepenuhnya dibandingkan dengan ungkapan idiomatik sederhana dalam bahasa yang lebih abstrak. Jika waktu / upaya pemrograman maksimum tinggi diizinkan, bahasa abstraksi yang lebih rendah akan memiliki keuntungan. Benchmark yang menyajikan hasil upaya terbaik secara alami akan bias mendukung bahasa yang kurang abstrak.
Terkadang mungkin untuk memprogram dengan cara yang kurang idiomatis dalam bahasa untuk mendapatkan keuntungan dari paradigma pemrograman lain, tetapi bahkan ketika kekuatan ekspresif tersedia, pengorbanan untuk melakukan hal tersebut mungkin tidak menguntungkan.