KonLang English

Hiệu năng

Trên các bài toán này, Kon chạy gần ngang C mà vẫn giữ kiểm tra biên. Đây là năm chương trình nhỏ trên một máy, không đủ để xếp hạng các ngôn ngữ nói chung.

So với C và Rust

Cùng thuật toán và cùng checksum ở mỗi ngôn ngữ; chương trình nào cũng kiểm tra đáp án đúng. Thời gian tính bằng mili giây, càng thấp càng tốt.

sieve
Kon190 msC208 msRust164 ms
hashtable
Kon188 msC180 msRust175 ms
tokenize
Kon445 msC417 msRust443 ms
quicksort
Kon424 msC368 msRust403 ms
matrix_int
Kon113 msC113 msRust112 ms

Bài sieve của C đo được từ 151 đến 208 ms qua các lần, nên chênh lệch ở hàng này nằm trong sai số. Truy cập List được biên dịch inline mà vẫn giữ kiểm tra biên, và đó là lý do chính khiến các con số gần nhau.

kon build không có --release là chưa tối ưu, chậm hơn 1,9 đến 6,9 lần.

Số thực

Một phép đo sớm, chỉ so với C và trên compiler cũ hơn:

Bài toánKon (ms)C (ms)
matrix5853
nbody9786
mandelbrot154khoảng 156

Thư viện

Bài toánThư viện Konstd của Rustqsort của C
Map, 100.000 khoá9 ms4 ms
Sắp xếp 5 triệu số nguyên156 ms90 ms597 ms

Bộ cấp phát theo cỡ cũng đưa một chương trình dùng nhiều List nhỏ từ 201 ms xuống 35 ms trên Windows, và giờ là mặc định.

Kích thước

Một chương trình đơn giản khoảng 90 KB. Trên cùng bài toán, C khoảng 64 KB và Rust khoảng 4,9 MB chưa strip.

Điều học được

  • Inline quan trọng nhất. Gọi vào runtime cho mỗi lần truy cập List chậm khoảng 2,8 lần C; biên dịch inline đưa con số đó về khoảng 1,0, vẫn giữ kiểm tra biên.
  • AVX2 không giúp gì trên các chương trình này. Biên dịch cho CPU mới hơn không nhanh hơn, ở cả Kon, C và Rust.
  • Arena không lợi như tưởng tượng. Chỉ còn hơn rõ trên cây, khoảng 3,4 lần; bộ cấp phát tốt lấy được phần lớn lợi ích còn lại mà không cần phân tích gì.
  • Xếp dữ liệu theo cột vừa lợi vừa hại. Lưu List theo trường nhanh hơn tới 5,8 lần khi vòng lặp chỉ dùng ít trường, và chậm hơn 4,5 lần khi đọc ngẫu nhiên cả hàng, đo bằng tay trong C. Vì vậy nếu Kon có tính năng này, người viết sẽ chọn chứ không phải compiler.

Phương pháp

Intel Core Ultra 5 225H, Windows 11, một tiến trình ghim vào một lõi. Lấy lần nhanh nhất trong 7 lần, trừ thời gian khởi chạy đo bằng chương trình rỗng. Clang 23.1.4 với -O2 và Rust 1.99.1 với opt-level=2, đo vào tháng 10 năm 2026.

Chưa đo

  • Thời gian biên dịch.
  • Chương trình lớn, thực tế.
  • Máy hoặc hệ điều hành khác.
  • Kiểm tra biên có cản vector hoá hay không.