KABAFORCEGeliştirici KabaOS'u edinin

Metin ve veri

Kelime sayma

Program içinde üretilen yaklaşık 1 MB metin satırlara ve kelimelere bölünür; kelimeler sözlükte sayılır. Metin bölmeyi ve metin anahtarlı sözlüğü ölçer.

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

Canlı ölçüm

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

Kelime sayma 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ç

Kelime sayma

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

1 MB üretilmiş metin, 200.000 kelime · bölme ve sözlük. Çubuk uzunsa daha hızlı.

DilReferans
KabaLang
11,4 ms
C++
12,2 msKabaLang 1,07 kat hızlı
Python
200 msKabaLang 17 kat hızlı
DilEn iyiOrtalamaDerlemeİkili boyutu
KabaLang11,4 ms11,9 ms728 ms998 KB
C++12,2 ms13,0 ms486 ms28 KB
Python200 ms203 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

Kelime sayma: KabaLang / C++ süre oranı0,00×1,00×2,00×3,00×4,00×20 Ekim 2026 21:18 · KabaLang 0.6.0 (b0e9258) · 35 / 12 msb0e925821 Ekim 2026 05:21 · KabaLang 0.6.0 (e4756c0) · 23 / 13 ms21 Ekim 2026 06:07 · KabaLang 0.6.0 (94109b3+) · 21 / 12 ms21 Ekim 2026 06:13 · KabaLang 0.6.0 (94109b3+) · 19 / 12 ms21 Ekim 2026 07:18 · KabaLang 0.6.0 (94109b3+) · 11 / 12 ms21 Ekim 2026 14:53 · KabaLang 0.6.0 (94109b3+) · 11 / 12 ms94109b3+0,93×

Ne ölçüyor?

Metin bölmeyi ve metin anahtarlı sözlüğü ölçer.

Kategori: Metin ve veri. Metin bölme, sözlük, JSON ayrıştırma ve yazma. Üç 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
999281 200000 4368 pi 4281 799282

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
HECELER = ["ka", "ba", "la", "ng", "ke", "li", "me", "de", "si", "ne", "ta", "ra", "mo", "du", "pi", "ze"]

# Belirli (her koşuda aynı) ~1 MB metin: 20.000 satır × 10 kelime.
x = 42
satirlar: liste<metin> = []
dongu _ icinde 0..<20000:
    kelimeler: liste<metin> = []
    dongu _ icinde 0..<10:
        x = (x * 1103515245 + 12345) % 2147483648
        hece_sayisi = x // 65536 % 3 + 1
        kelime = ""
        dongu _ icinde 0..<hece_sayisi:
            x = (x * 1103515245 + 12345) % 2147483648
            kelime += HECELER[x // 65536 % 16]
        kelimeler.ekle(kelime)
    satirlar.ekle(kelimeler.birlestir(" "))
metin = satirlar.birlestir("\n")

sayilar: sozluk<metin, sayi> = {}
toplam = 0
dongu satir icinde metin.bol("\n"):
    dongu kelime icinde satir.bol(" "):
        sayilar[kelime] = sayilar.al(kelime, 0) + 1
        toplam += 1

en_sik = ""
en_cok = 0
harf = 0
dongu kelime, adet icinde sayilar.ciftler():
    harf += kelime.uzunluk() * adet
    eger adet > en_cok veya (adet == en_cok ve kelime < en_sik):
        en_sik = kelime
        en_cok = adet

yazdir(metin.uzunluk(), toplam, sayilar.uzunluk(), en_sik, en_cok, harf)
program.cpp
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>

int main() {
    const std::vector<std::string> HECELER = {"ka", "ba", "la", "ng", "ke", "li", "me", "de",
                                              "si", "ne", "ta", "ra", "mo", "du", "pi", "ze"};

    // Belirli (her koşuda aynı) ~1 MB metin: 20.000 satır × 10 kelime.
    long long x = 42;
    std::string metin;
    for (int s = 0; s < 20000; ++s) {
        if (s) metin += '\n';
        for (int k = 0; k < 10; ++k) {
            x = (x * 1103515245 + 12345) % 2147483648LL;
            int hece_sayisi = x / 65536 % 3 + 1;
            std::string kelime;
            for (int h = 0; h < hece_sayisi; ++h) {
                x = (x * 1103515245 + 12345) % 2147483648LL;
                kelime += HECELER[x / 65536 % 16];
            }
            if (k) metin += ' ';
            metin += kelime;
        }
    }

    std::unordered_map<std::string, long long> sayilar;
    long long toplam = 0;
    size_t satir_bas = 0;
    while (satir_bas <= metin.size()) {
        size_t satir_son = metin.find('\n', satir_bas);
        if (satir_son == std::string::npos) satir_son = metin.size();
        size_t bas = satir_bas;
        while (true) {
            size_t son = metin.find(' ', bas);
            if (son == std::string::npos || son > satir_son) son = satir_son;
            ++sayilar[metin.substr(bas, son - bas)];
            ++toplam;
            if (son == satir_son) break;
            bas = son + 1;
        }
        satir_bas = satir_son + 1;
    }

    std::string en_sik;
    long long en_cok = 0, harf = 0;
    for (const auto &[kelime, adet] : sayilar) {
        harf += kelime.size() * adet;
        if (adet > en_cok || (adet == en_cok && kelime < en_sik)) {
            en_sik = kelime;
            en_cok = adet;
        }
    }

    std::cout << metin.size() << " " << toplam << " " << sayilar.size() << " " << en_sik << " " << en_cok << " "
              << harf << std::endl;
    return 0;
}
program.py
HECELER = ["ka", "ba", "la", "ng", "ke", "li", "me", "de", "si", "ne", "ta", "ra", "mo", "du", "pi", "ze"]

# Belirli (her koşuda aynı) ~1 MB metin: 20.000 satır × 10 kelime.
x = 42
satirlar = []
for _ in range(20000):
    kelimeler = []
    for _ in range(10):
        x = (x * 1103515245 + 12345) % 2147483648
        hece_sayisi = x // 65536 % 3 + 1
        kelime = ""
        for _ in range(hece_sayisi):
            x = (x * 1103515245 + 12345) % 2147483648
            kelime += HECELER[x // 65536 % 16]
        kelimeler.append(kelime)
    satirlar.append(" ".join(kelimeler))
metin = "\n".join(satirlar)

sayilar = {}
toplam = 0
for satir in metin.split("\n"):
    for kelime in satir.split(" "):
        sayilar[kelime] = sayilar.get(kelime, 0) + 1
        toplam += 1

en_sik = ""
en_cok = 0
harf = 0
for kelime, adet in sayilar.items():
    harf += len(kelime) * adet
    if adet > en_cok or (adet == en_cok and kelime < en_sik):
        en_sik = kelime
        en_cok = adet

print(len(metin), toplam, len(sayilar), en_sik, en_cok, harf)
program.js · yalnız tarayıcı ölçümünde
const HECELER = ["ka", "ba", "la", "ng", "ke", "li", "me", "de", "si", "ne", "ta", "ra", "mo", "du", "pi", "ze"];

export default function program(yaz = console.log) {
  // Belirli (her koşuda aynı) ~1 MB metin: 20.000 satır × 10 kelime.
  // x = (x * 1103515245 + 12345) mod 2^31 — çarpımın düşük bitleri Math.imul ile tam.
  let x = 42;
  const satirlar = [];
  for (let s = 0; s < 20000; s++) {
    const kelimeler = [];
    for (let k = 0; k < 10; k++) {
      x = (Math.imul(x, 1103515245) + 12345) & 0x7fffffff;
      const heceSayisi = (x >>> 16) % 3 + 1;
      let kelime = "";
      for (let h = 0; h < heceSayisi; h++) {
        x = (Math.imul(x, 1103515245) + 12345) & 0x7fffffff;
        kelime += HECELER[(x >>> 16) % 16];
      }
      kelimeler.push(kelime);
    }
    satirlar.push(kelimeler.join(" "));
  }
  const metin = satirlar.join("\n");

  const sayilar = new Map();
  let toplam = 0;
  for (const satir of metin.split("\n")) {
    for (const kelime of satir.split(" ")) {
      sayilar.set(kelime, (sayilar.get(kelime) || 0) + 1);
      toplam++;
    }
  }

  let enSik = "", enCok = 0, harf = 0;
  for (const [kelime, adet] of sayilar) {
    harf += kelime.length * adet;
    if (adet > enCok || (adet === enCok && kelime < enSik)) {
      enSik = kelime;
      enCok = adet;
    }
  }
  yaz([metin.length, toplam, sayilar.size, enSik, enCok, harf].join(" "));
}

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