"Bangku" adalah ... Setelah beberapa hari tidak aktif, penarikan dimulai, saya ingin menyibukkan diri dengan sesuatu. Terkadang saya terganggu oleh proyek hewan peliharaan, terkadang dengan membaca literatur ... Sekarang saya akan memberi tahu Anda tentang apa yang terjadi selama "mode siaga" terakhir.
Selama bertahun-tahun saya khawatir tentang kinerja bahasa pemrograman (terutama tertarik pada PHP ). Daftar di bawah ini berisi beberapa keyakinan saya, sampai saat ini:
PHP adalah salah satu bahasa pemrograman paling lambat
Python lebih cepat dari PHP
Ruby lebih cepat dari PHP
C / C ++ jauh lebih cepat daripada gabungan Python dan PHP
Assembler adalah urutan besarnya lebih cepat dari C / C ++
Langkah pertama adalah memutuskan tes mana yang akan diambil sebagai dasar. Mari kita coba menulis program untuk menemukan bilangan prima (saya tahu ada banyak algoritma untuk menemukan bilangan prima, artikel bagus tentang topik ini).
Kode berikut diambil sebagai basis (pencacahan primitif, yang bahkan tidak berhenti jika sudah mengetahui bahwa bilangan tersebut bukan bilangan prima):
<?php
$primeNumberCount = isset($argv[1]) ? $argv[1] : 100;
$number = 0;
while ($primeNumberCount > 0) {
$number++;
$j = 0;
for ($i = 1; $i <= $number; $i++) {
if ($number % $i === 0) {
$j++;
}
}
if ($j === 2) {
$primeNumberCount--;
}
}
echo 'The latest prime number: ' . $number . PHP_EOL;
Dan kemudian semuanya seperti kabut: Python, C / C ++, Pascal, Go, dll. Semua sumber dapat dilihat di sini . Saya melakukan semua tes di buruh pelabuhan agar tidak menyumbat komputer.
, . Assembler , - . , Assembler/NASM , .
:
, :
PHP Python Ruby
PHP
Python 3 Python 2
/C++ Assembler/NASM 15%
Rust
sangat terkejut dengan hasil tes Node.js/Javascript (pengembang V8 tampan)
dll
Saat ini, saya berencana untuk secara bertahap menambahkan tes baru (bila waktu dan suasana hati memungkinkan).
Tujuan artikel ini bukan untuk menunjukkan bahasa pemrograman mana yang tercepat, tetapi agar keyakinan kita salah, dan bahwa kita tidak boleh percaya semua cerita di ruang merokok (banyak delusi saya berasal dari sana, seseorang di suatu tempat mendengar bahwa X lebih cepat dari Y).
PS: Sumber dapat ditemukan di sini
PPS. Menambahkan Ruby 3 , sesuatu yang tidak banyak membantu ...
PPPS. Mengubah metode penghitungan waktu eksekusi, meningkatkan nomor urut bilangan prima (dari 5000 menjadi 7000).