Özet
Aynı algoritmalar dört dilde yazıldı ve aynı bilgisayarda ölçüldü. Açılış süresi çıkarıldığında, sekiz hesaplama testinin geometrik ortalamasına göre Yöntem'in ürettiği C++ kodu elle yazılmış C++'tan 1,9 kat, JavaScript'e derlenen Yöntem 29 kat yavaş çalıştı. Python yorumlayıcısı öğrenme ve başvuru amaçlıdır; hız için tasarlanmamıştır.
| Ortam | Kat |
|---|---|
| C++ (g++ -O2) | 1,0× |
| Yöntem → C++ | 1,9× |
| Node.js | 4,0× |
| Python 3 | 23,6× |
| Yöntem → JavaScript | 29,0× |
| Yöntem, Python yorumlayıcısı | 1673× |
Ölçümün kapsamı ve sınırları
- Ölçüm 2026-11-09 tarihinde, Yöntem 0.5.0 ile tek bir Linux bilgisayarında (x86-64) yapıldı. Başka donanımda oranlar değişebilir.
- "Yöntem → C++" satırı, gömülü arka ucun ürettiği C++ kodunun bilgisayarda g++ -O2 ile derlenmiş hâlidir. ESP32 kartında ölçüm yapılmadı; bu sayılar kart üzerindeki hızı göstermez.
- Dokuz testten biri (
bos) yalnızca açılış süresini ölçer ve oranlardan çıkarılır; oranlar kalan sekiz testten hesaplanır. - Her test ısınmadan sonra 7 kez çalıştırıldı ve ortanca süre alındı. Çıktısı beklenenle birebir aynı olmayan ölçüm geçersiz sayılır.
- Testler küçük hesaplama çekirdekleridir; dosya, ağ ya da arayüz ağırlıklı programlar için bir şey söylemez.
| Ortam | Sürüm |
|---|---|
| Node.js | v22.23.4 |
| Python | 3.13.18 |
| C++ derleyicisi | g++ (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 |
| Yöntem | Yöntem 0.5.0 (JavaScript) |
Testler
| Test | Ne ölçer? |
|---|---|
bos | açılış süresi (boş program) |
fannkuch | fannkuch (N=8): tamsayı dizileri |
fib | özyinelemeli Fibonacci(27): fonksiyon çağrısı |
ikili_agac | tam ikili ağaçlar (derinlik 14): nesne oluşturma |
matris | 100×100 matris çarpımı: ondalık aritmetik, dizi erişimi |
nbody | beş cisim, 20000 adım: ondalık aritmetik |
siralama | 30000 sayıyı hızlı sıralama: karşılaştırma, takas |
sozcuk_sayma | 40000 sözcüğü sayma: metin ve sözlük |
spektral | spektral norm (N=120): fonksiyon çağrısı, ondalık |
C++'a göre kaç kat yavaş?
Açılış süresi çıkarılmış oranlar; 1,0× elle yazılmış C++'tır.
| Test | Yöntem → C++ | Yöntem → JavaScript | Yöntem, Python yorumlayıcısı | C++ (g++ -O2) | Node.js | Python 3 |
|---|---|---|---|---|---|---|
| fannkuch | 1,5× | 32,2× | 2859× | 1,0× | 3,0× | 42,6× |
| fib | 1,5× | 17,9× | 3399× | 1,0× | 3,9× | 23,1× |
| ikili_agac | 1,5× | 20,0× | 473× | 1,0× | 2,8× | 6,3× |
| matris | 2,3× | 59,4× | 4709× | 1,0× | 6,2× | 99,5× |
| nbody | 5,8× | 100× | 6783× | 1,0× | 4,5× | 95,1× |
| siralama | 1,4× | 21,5× | 1047× | 1,0× | 4,3× | 11,6× |
| sozcuk_sayma | 1,2× | 7,5× | 89,4× | 1,0× | 3,2× | 3,2× |
| spektral | 2,6× | 46,0× | 4456× | 1,0× | 5,7× | 43,9× |
Ortanca süreler
Açılış süresi dahil, olduğu gibi ölçülen süreler.
| Test | Yöntem → C++ | Yöntem → JavaScript | Yöntem, Python yorumlayıcısı | C++ (g++ -O2) | Node.js | Python 3 |
|---|---|---|---|---|---|---|
| bos | 1,6 ms | 63,2 ms | 32,8 ms | 1,0 ms | 32,6 ms | 13,7 ms |
| fannkuch | 6,2 ms | 0,159 sn | 8,579 sn | 4,0 ms | 41,6 ms | 0,141 sn |
| fib | 3,1 ms | 81,1 ms | 3,432 sn | 1,4 ms | 36,5 ms | 36,8 ms |
| ikili_agac | 11,4 ms | 0,195 sn | 3,146 sn | 7,5 ms | 50,8 ms | 55,3 ms |
| matris | 5,1 ms | 0,153 sn | 7,181 sn | 2,5 ms | 42,0 ms | 0,165 sn |
| nbody | 13,6 ms | 0,269 sn | 13,991 sn | 3,0 ms | 41,8 ms | 0,209 sn |
| siralama | 7,6 ms | 0,154 sn | 4,484 sn | 5,2 ms | 51,0 ms | 63,1 ms |
| sozcuk_sayma | 10,7 ms | 0,119 sn | 0,699 sn | 8,4 ms | 56,4 ms | 37,7 ms |
| spektral | 6,2 ms | 0,142 sn | 7,703 sn | 2,7 ms | 42,5 ms | 89,3 ms |
Ölçümü kendiniz yinelemek
Test programları, beklenen çıktılar ve ölçüm betiği Yöntem deposunun benchmark/ klasöründedir. Node.js, Python 3 ve g++ (ya da clang++) kurulu bir bilgisayarda:
cd js && npm install && npm run build && cd ..
python3 benchmark/calistir.py
Sonuçlar benchmark/sonuclar/ klasörüne yazılır: rapor.md (bu sayfadaki tablolar), rapor.json (ham ölçümler) ve rapor.svg (grafik). Kendi ölçümünüzde farklı bir sonuç görürseniz topluluk sayfasındaki yoldan bildirebilirsiniz.