Fibonacci özyineleme
C++'tan 1,27 kat hızlıfib(35) · 9,2 milyon işlev çağrısı. Çubuk uzunsa daha hızlı.
Sayısal hesaplama
fib(35) özyinelemeli olarak hesaplanır: 9.227.465 işlev çağrısı. İşlev çağrısının maliyetini ve tam sayı toplamasını (KabaLang'da taşma denetimli) ölçer.
Bu sayfayı KabaLang ile yazılmış sunucu sundu.
Canlı ölçüm
Fibonacci özyineleme tarayıcınızda, WebAssembly ile koşar: KabaLang, C++, JavaScript ve Python. Ölçüm sayfası bu testi seçili açar; sonuçlar cihazınızda kalır.
fib(35) · 9,2 milyon işlev çağrısı. Çubuk uzunsa daha hızlı.
| Dil | En iyi | Ortalama | Derleme | İkili boyutu |
|---|---|---|---|---|
| KabaLang | 16,3 ms | 17,2 ms | 580 ms | 981 KB |
| C++ | 20,7 ms | 21,1 ms | 427 ms | 16 KB |
| Python | 761 ms | 770 ms | – | – |
Ne ölçüyor?
Kategori: Sayısal hesaplama. Tam sayı ve ondalık aritmetik, sıkı döngüler, işlev çağrıları. Üç program da aynı algoritmayı aynı adımlarla uygular ve aynı çıktıyı üretmek zorundadır; çıktı tutmazsa ölçüm geçersiz sayılır.
9227465Derleme
kabalang derle program.kbl -o program
./programclang++ -O2 -o program program.cpp
./programpython3 program.py-O 2; program, çalışma zamanıyla
birlikte bağlama anında eniyilenir ve statik bağlanır (tek, bağımlılıksız ikili).-O2; standart kütüphaneye dinamik bağlı.Kaynak
Aşağıdaki dosyalar ölçülen programların kendisidir.
fonksiyon fib(n: sayi) -> sayi:
eger n < 2:
don n
don fib(n - 1) + fib(n - 2)
yazdir(fib(35))#include <iostream>
long long fib(long long n) {
if (n < 2) return n;
return fib(n - 1) + fib(n - 2);
}
int main() {
std::cout << fib(35) << std::endl;
return 0;
}def fib(n: int) -> int:
if n < 2:
return n
return fib(n - 1) + fib(n - 2)
print(fib(35))function fib(n) {
if (n < 2) return n;
return fib(n - 1) + fib(n - 2);
}
export default function program(yaz = console.log) {
yaz(fib(35));
}
// `node program.js` ile de koşar (tarayıcıda ölçüm işçisi program()ı çağırır).
if (globalThis.process?.argv?.[1]?.endsWith("program.js")) program();