5 điểm bởi GN⁺ 2023-07-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Fizz Buzz là một bài toán lập trình thường được dùng trong phỏng vấn.
  • Bài viết này giới thiệu nhiều cách triển khai FizzBuzz bằng các ngôn ngữ lập trình khác nhau.
  • Thông lượng cao nhất đạt được cho đến nay là khoảng 57.2 GiB/s bằng hợp ngữ.
  • Bài viết cung cấp hướng dẫn build và sử dụng cho bản triển khai bằng hợp ngữ.
  • Phiên bản đa luồng của chương trình không mang lại mức cải thiện tốc độ đáng kể.
  • Bài viết nhấn mạnh những thách thức và tối ưu hóa để triển khai FizzBuzz hiệu năng cao.
  • Bài viết thảo luận về một chương trình assembler AVX2 triển khai thuật toán FizzBuzz.
  • Chương trình này sử dụng định dạng highly composite number và system call vmsplice để đạt hiệu năng nhanh hơn.
  • Chương trình bao gồm nhiều bước khởi tạo và các routine để ghi Fizz, Buzz và số dòng.
  • Bài viết đề cập đến một bytecode interpreter tạo ra đầu ra FizzBuzz liên tiếp.
  • Chương trình bytecode được diễn giải bằng các lệnh SIMD để xử lý hiệu quả.
  • Bài viết thảo luận về các phần mã cụ thể liên quan đến vòng lặp chính dùng để diễn giải bytecode và tạo đầu ra.
  • Đoạn mã được cung cấp là một bài nộp cho thử thách lập trình nhằm tối ưu hiệu năng FizzBuzz.
  • Mã này đạt hiệu năng cao và tận dụng các kỹ thuật cũng như lệnh nâng cao.
  • Bài viết thảo luận về một chương trình C tạo chuỗi FizzBuzz bằng các kỹ thuật tối ưu hóa.
  • Đoạn mã này tiếp tục được các nhà phát triển khác tối ưu thêm và cho thấy hiệu năng tốt hơn.
  • Bài viết thảo luận về một bài nộp mã sử dụng biên dịch JIT để tạo ra hợp ngữ FizzBuzz nhanh hơn.
  • Bản triển khai này bao gồm preprocessor và mã C được vector hóa để xuất kết quả hiệu quả.
  • Mã đã được tối ưu và thử nghiệm trên nhiều hệ thống để cho hiệu năng tốt hơn các bài nộp trước đó.
  • Bài viết thảo luận về một bản triển khai mã C dùng các lệnh AVX2 để tối ưu hóa.
  • Bản triển khai này bao gồm một JIT compiler và đạt tốc độ cao cùng mức sử dụng bộ nhớ hiệu quả.
  • Bài viết cung cấp một bản triển khai Rust để thể hiện tốc độ của FizzBuzz.
  • Bản triển khai Rust sử dụng chuyển đổi integer-to-string hiệu quả và kỹ thuật chia mã thành chunk.
  • Bài viết thảo luận về một chương trình C triển khai FizzBuzz bằng các kỹ thuật nâng cao và tối ưu hóa.
  • Chương trình này được thiết kế để chạy nhanh hơn tất cả các mục khác và có kèm giải thích cùng các đoạn mã.
  • Tác giả đưa ra mẹo và cảnh báo khi sử dụng system call vmsplice, đồng thời bao gồm một test module.
  • Văn bản này có các đoạn mã liên quan đến một hàm tên là fizzbuzz, dùng để tạo đầu ra hiệu quả.

1 bình luận

 
GN⁺ 2023-07-04
Ý kiến trên Hacker News
  • Linux là một thiết kế kiến trúc hệ thống ấn tượng vì nó có thể giữ toàn bộ dữ liệu được pipe từ chương trình này sang chương trình khác trong bộ nhớ đệm L2.
  • Tác giả bài viết trao đổi qua lại với một người không chạy được chương trình và giải quyết vấn đề liên quan đến ASLR bằng một bình luận rất công phu.
  • Hiệu năng trong bản triển khai FizzBuzz bằng Rust là điều không ngờ tới, ở mức tương tự Python 3.
  • Viết mã bằng assembly có thể làm mọi thứ nhanh hơn.
  • Việc đánh giá tốc độ giải các bài toán phức tạp có sai sót, vì chủ yếu nó kiểm tra hiệu quả của việc truy xuất bộ nhớ và truyền giữa các tiến trình.
  • Việc sử dụng vmsplice cung cấp quyền truy cập vào bộ nhớ của tiến trình cho các tiến trình khác, nên có thể không phù hợp với các yêu cầu của cuộc thi.
  • Điều này khiến người ta đặt câu hỏi về tầm quan trọng của phần mở rộng tệp ".S" và ".s".
  • Java nhanh đến mức đáng ngạc nhiên khi so với các ngôn ngữ khác như C, C++, assembly, Go và Rust.