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.
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án | Kon (ms) | C (ms) |
|---|---|---|
| matrix | 58 | 53 |
| nbody | 97 | 86 |
| mandelbrot | 154 | khoảng 156 |
Thư viện
| Bài toán | Thư viện Kon | std của Rust | qsort của C |
|---|---|---|---|
| Map, 100.000 khoá | 9 ms | 4 ms | |
| Sắp xếp 5 triệu số nguyên | 156 ms | 90 ms | 597 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.