Đó là câu hỏi mà The One Billion Row Challenge (1BRC) đã đặt ra cho các nhà phát triển Java trên khắp thế giới. Cuộc thi này là một sân chơi để khám phá khả năng của Java hiện đại trong việc tổng hợp một tỷ dòng dữ liệu từ một tệp văn bản chứa các giá trị nhiệt độ của các trạm thời tiết.
Tags: #javaĐó là câu hỏi mà The One Billion Row Challenge (1BRC) đã đặt ra cho các nhà phát triển Java trên khắp thế giới. Cuộc thi này là một sân chơi để khám phá khả năng của Java hiện đại trong việc tổng hợp một tỷ dòng dữ liệu từ một tệp văn bản chứa các giá trị nhiệt độ của các trạm thời tiết. Các thí sinh phải viết một chương trình Java để đọc tệp văn bản, tính toán giá trị nhiệt độ nhỏ nhất, trung bình và lớn nhất cho mỗi trạm thời tiết, và xuất kết quả ra stdout theo định dạng nhất định.
Khi so sánh Java và C++, chúng ta có thể nhận ra một số điểm yếu của Java so với C++. Dưới đây là một số khía cạnh cần xem xét:
Cuộc thi được tổ chức bởi Gunnar Morling, một kỹ sư phần mềm và nhà phát triển Java, với sự tài trợ của công ty Decodable. Cuộc thi đã kết thúc vào ngày 31 tháng 1 năm 2024, với hơn 100 bài nộp từ các nhà phát triển Java khác nhau. Kết quả được đánh giá trên một máy chủ Hetzner AX161 với 32 nhân AMD EPYC™ 7502P (Zen2) và 128 GB RAM.
Bài nộp nhanh nhất là của Thomas Wuerthinger, Quan Anh Mai, Alfonso² Peterssen, với thời gian chạy là 1.535 giây, sử dụng GraalVM native binary và Unsafe. Bài nộp này đã tận dụng tối đa các tính năng của GraalVM, một máy ảo Java tối ưu hóa cho các ứng dụng hiệu năng cao. Bài nộp này cũng đã sử dụng Unsafe, một lớp Java cho phép truy cập trực tiếp vào bộ nhớ, để tăng tốc độ đọc và xử lý dữ liệu.
Rất tự hào vì có Quan Anh Mai là một kĩ sư người Việt Nam hiện đang làm việc tại Shopee Singapore có tên nằm trong nhóm dẫn đầu. Quan Anh Mai trước đây là cựu học sinh chuyên Toán trường chuyên Hà Nội Amsterdam, sau đó anh này tốt nghiệp Đại học Bách khoa Hà Nội ngành Khoa học máy tính.
Bài nộp thứ hai là của Jaromir Hamala, với thời gian chạy là 1.587 giây, cũng sử dụng GraalVM native binary và Unsafe. Bài nộp thứ ba là của Artsiom Korzun, với thời gian chạy là 1.608 giây, cũng sử dụng GraalVM native binary và Unsafe. Các bài nộp khác cũng đã sử dụng các kỹ thuật khác nhau để tối ưu hóa hiệu năng của Java, như sử dụng các luồng ảo, SIMD, GC, hoặc các thư viện bên ngoài.
Cuộc thi này đã cho thấy Java là một ngôn ngữ lập trình mạnh mẽ và linh hoạt, có thể xử lý các tác vụ xử lý dữ liệu lớn một cách hiệu quả và nhanh chóng. Cuộc thi này cũng đã tạo ra một cộng đồng sôi nổi và hào hứng của các nhà phát triển Java, cùng nhau học hỏi và chia sẻ các kinh nghiệm và kỹ thuật lập trình. Cuộc thi này là một minh chứng cho sự phát triển và sáng tạo của Java trong thời đại số.