Ada masalah umum dengan pertanyaan ini karena terlalu absolut. Tidak masuk akal untuk mengatakan "bahasa X lebih cepat dari bahasa Y". Bahasa komputer itu sendiri tidak "cepat" atau "lambat" karena itu hanya cara mengekspresikan suatu algoritma. Pertanyaan aktual seharusnya ada pada urutan "mengapa implementasi X1 bahasa X lebih cepat dari implementasi Y1 bahasa Y untuk domain masalah khusus ini?"
Beberapa perbedaan kecepatan pasti akan keluar dari bahasa itu sendiri karena bahasa tertentu lebih mudah untuk mengimplementasikan domain tertentu daripada yang lain. Tetapi banyak dari apa yang membuat implementasi cepat bukan bahasa. Misalnya, Anda tidak bisa mengatakan "Python lebih lambat dari Java" tanpa mempertimbangkan apakah Anda berbicara tentang CPython, IronPython, atau PyPy. Hal ini terutama berlaku untuk bahasa yang menggunakan VM karena kecepatannya akan langsung dipengaruhi oleh kualitas VM.
Selain itu, saya bekerja dengan sistem yang karena berbagai alasan tidak dapat menggunakan JIT pada perangkat kami dengan JavaScript VM yang sangat populer yang biasanya mendukungnya. Ini berarti bahwa JavaScript kami berjalan jauh, jauh lebih lambat daripada di PC dengan prosesor yang sama. Satu perubahan itu, yang tidak terkait langsung dengan bahasa itu sendiri, menjadikan JavaScript dari "beberapa kali lebih lambat daripada C ++" menjadi "pesanan dengan magnitudo lebih lambat dari pada C ++" untuk tugas-tugas yang kita pedulikan.
Juga pertimbangkan adalah bahwa bahasa berbeda dalam karakteristik kinerja dengan cara yang tidak dapat dibandingkan secara langsung. Terlalu banyak tolok ukur hanya menerjemahkan program dari bahasa A ke bahasa B dan tidak memperhitungkan bahwa bahasa berbeda dalam fitur apa yang cepat. (Anda dapat melihat ini dalam perbandingan tolok ukur yang masuk akal seperti yang Anda tautkan karena mereka sering memiliki catatan seperti "terima kasih kepada anu-anu karena menunjukkan kepada saya bagaimana menerapkannya dalam bahasa Foo.)
Misalnya, Ambil kode Java ini:
for(int i=0;i<10;i++) {
Object o = new Object;
doSomething(o);
}
Akan tergoda untuk "menulis ulang" ini dalam C ++ dan membandingkan run time:
for(int i=0;i<10;i++) {
Object *o = new Object;
doSomething(o);
delete(o);
}
Masalahnya, setiap programmer C ++ yang kompeten akan segera melihat bahwa di C ++, ini bukan cara tercepat untuk melakukan sesuatu. Anda dapat dengan mudah mempercepat dengan mengubahnya agar lebih sesuai dengan C ++:
for(int i=0;i<10;i++) {
Object o;
doSomething(&o);
}
Intinya bukan bahwa C ++ bisa cepat tetapi daripada menulis tolok ukur untuk membandingkan bahasa benar-benar sulit. Untuk melakukannya dengan tepat, Anda harus menjadi ahli dalam kedua bahasa, dan menulis dari awal dalam kedua bahasa. Bahkan kemudian, Anda dapat dengan mudah lari ke area di mana satu bahasa unggul dalam tugas tertentu. Sebagai contoh, saya dapat menulis versi Towers of Hanoi di C ++ yang akan berjalan lebih cepat dari Java pada kompiler yang masuk akal. Saya bisa melakukannya dengan cara curang, menggunakan templat C ++, dievaluasi pada waktu kompilasi (http://forums.devshed.com/c-programming-42/c-towers-of-hanoi-using-templates-424148.html)
Intinya tidak ada yang bisa saya katakan bahwa "C ++ lebih cepat daripada Java" karena program saya kembali secara instan sementara versi Java berjalan selama beberapa menit (dan berharap tidak ada yang memperhatikan program saya membutuhkan waktu setengah jam untuk membangun.) Intinya adalah bahwa untuk ini bervariasi kasus sempit, C ++ lebih cepat. Untuk kasus sempit lainnya, mungkin sebaliknya. Jadi itu bukan "C ++ lebih cepat", itu "C ++ lebih cepat dalam kasus di mana Anda dapat mengevaluasi ekspresi saat membangun menggunakan templat." Kurang memuaskan, tetapi benar.
Perbedaan kecepatan dalam bahasa sebagian besar tentang implementasi. Bahasa yang dikompilasi akan lebih cepat daripada bahasa yang ditafsirkan. Kompilasi ke kode asli akan lebih cepat daripada kompilasi ke kode byte. Ini akan memiliki lebih banyak efek daripada pertanyaan seperti apakah bahasa diketik secara statis atau tidak. Dan tentu saja, implementasi yang baik akan lebih cepat daripada yang buruk.
Dan jangan lupa bahwa programmer yang baik akan menghasilkan kode yang lebih cepat daripada programmer yang buruk, seringkali sampai pada taraf yang jauh melebihi perbedaan bahasa.