KABAFORCEGeliştirici KabaOS'u edinin

Sayısal hesaplama

Mandelbrot kümesi

400 × 300 noktalık ızgarada her nokta en çok 200 kez yinelenir; kümede kalan yineleme sayısı toplanır. Ondalık sayı işlemlerini ve iç içe sıkı döngüleri ölçer.

Bu sayfayı KabaLang ile yazılmış sunucu sundu.

Canlı ölçüm

Bu testi kendi bilgisayarınızda ölçün

Mandelbrot kümesi 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.

Bu testi canlı ölç

Mandelbrot kümesi

C++'tan 1,02 kat hızlı

120.000 nokta × en çok 200 yineleme · ondalık sayı. Çubuk uzunsa daha hızlı.

DilReferans
KabaLang
16,3 ms
C++
16,6 msKabaLang 1,02 kat hızlı
Python
421 msKabaLang 26 kat hızlı
DilEn iyiOrtalamaDerlemeİkili boyutu
KabaLang16,3 ms17,0 ms644 ms982 KB
C++16,6 ms17,0 ms315 ms16 KB
Python421 ms430 ms––

Referans ölçüm: 21 Ekim 2026 14:53 · 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz · KabaLang 0.6.0 (94109b3+) · süreler milisaniye; ısınma koşusundan sonra 10 koşunun en iyisi.

Bu testte KabaLang / C++ oranı, zaman içinde

Mandelbrot kümesi: KabaLang / C++ süre oranı0,80×0,90×1,00×1,10×20 Ekim 2026 21:18 · KabaLang 0.6.0 (b0e9258) · 17 / 18 msb0e925821 Ekim 2026 05:21 · KabaLang 0.6.0 (e4756c0) · 17 / 18 ms21 Ekim 2026 06:07 · KabaLang 0.6.0 (94109b3+) · 16 / 16 ms21 Ekim 2026 06:13 · KabaLang 0.6.0 (94109b3+) · 16 / 17 ms21 Ekim 2026 07:18 · KabaLang 0.6.0 (94109b3+) · 16 / 17 ms21 Ekim 2026 14:53 · KabaLang 0.6.0 (94109b3+) · 16 / 17 ms94109b3+0,98×

Ne ölçüyor?

Ondalık sayı işlemlerini ve iç içe sıkı döngüleri ölçer.

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.

Beklenen çıktı

stdout
5652434

Derleme

Komutlar ve bayraklar

KabaLang

Uçbirim
kabalang derle program.kbl -o program
./program

C++

Uçbirim
clang++ -O2 -o program program.cpp
./program

Python

Uçbirim
python3 program.py

Kaynak

Ölçülen programlar

Aşağıdaki dosyalar ölçülen programların kendisidir.

program.kbl
fonksiyon kacis(cx: ondalik, cy: ondalik, sinir: sayi) -> sayi:
    zx = 0.0
    zy = 0.0
    i = 0
    iken i < sinir:
        x2 = zx * zx
        y2 = zy * zy
        eger x2 + y2 > 4.0:
            don i
        zy = 2.0 * zx * zy + cy
        zx = x2 - y2 + cx
        i = i + 1
    don sinir

toplam = 0
y = 0
iken y < 300:
    x = 0
    iken x < 400:
        toplam = toplam + kacis(-2.0 + ondalik(x) * 3.0 / 400.0, -1.2 + ondalik(y) * 2.4 / 300.0, 200)
        x = x + 1
    y = y + 1
yazdir(toplam)
program.cpp
#include <iostream>

int kacis(double cx, double cy, int sinir) {
    double zx = 0.0, zy = 0.0;
    int i = 0;
    while (i < sinir) {
        double x2 = zx * zx;
        double y2 = zy * zy;
        if (x2 + y2 > 4.0) return i;
        zy = 2.0 * zx * zy + cy;
        zx = x2 - y2 + cx;
        i++;
    }
    return sinir;
}

int main() {
    long long toplam = 0;
    for (int y = 0; y < 300; ++y) {
        for (int x = 0; x < 400; ++x) {
            toplam += kacis(-2.0 + (double)x * 3.0 / 400.0, -1.2 + (double)y * 2.4 / 300.0, 200);
        }
    }
    std::cout << toplam << std::endl;
    return 0;
}
program.py
def kacis(cx: float, cy: float, sinir: int) -> int:
    zx = 0.0
    zy = 0.0
    i = 0
    while i < sinir:
        x2 = zx * zx
        y2 = zy * zy
        if x2 + y2 > 4.0:
            return i
        zy = 2.0 * zx * zy + cy
        zx = x2 - y2 + cx
        i += 1
    return sinir

toplam = 0
y = 0
while y < 300:
    x = 0
    while x < 400:
        toplam += kacis(-2.0 + float(x) * 3.0 / 400.0, -1.2 + float(y) * 2.4 / 300.0, 200)
        x += 1
    y += 1
print(toplam)
program.js · yalnız tarayıcı ölçümünde
function kacis(cx, cy, sinir) {
  let zx = 0.0, zy = 0.0;
  for (let i = 0; i < sinir; i++) {
    const x2 = zx * zx, y2 = zy * zy;
    if (x2 + y2 > 4.0) return i;
    zy = 2.0 * zx * zy + cy;
    zx = x2 - y2 + cx;
  }
  return sinir;
}

export default function program(yaz = console.log) {
  let toplam = 0;
  for (let y = 0; y < 300; y++) {
    for (let x = 0; x < 400; x++) {
      toplam += kacis(-2.0 + x * 3.0 / 400.0, -1.2 + y * 2.4 / 300.0, 200);
    }
  }
  yaz(toplam);
}

// `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();