Tapir Liu

Go Optimizations 101

Trạng thái: Đã hoàn thành Thời gian đọc: 2026
Go Optimizations 101

Đây là một cuốn sách nói về cách tối ưu Go. Quá trình build trong Golang, compiler có thể có một số optimize nhất định, sẽ giúp code chạy nhanh hơn, hạn chế allocation hơn. Hoặc trong quá trình runtime, nếu không để ý thì có những cái rất nhỏ thôi, nhưng cũng ảnh hưởng đến tốc độ xử lý của CPU, tăng áp lực lên GC để đi dọn bộ nhớ trong chương trình. Cuốn sách này sẽ đề cập những điều đó.

Sách có các điểm tốt như sau:

  • Chỉ rõ các cách để viết chương trình Go tối ưu hơn.
  • Có các bài test benchmark để chứng minh.
  • Cập nhật các tối ưu của version Go mới nhất.
  • Chỉ ra các trường hợp đặc biệt của Go.

Tuy nhiên, tôi chỉ đánh giá cuốn sách này ở mức trung bình vì các lý do sau đây:

  • Nội dung trùng lắp: Xuyên suốt cuốn sách sẽ nêu vấn đề của Go, nhưng nội dung khá trùng lắp ở các chương với nhau. Nếu phải tóm tắt, tôi có thể tóm tắt lại 1 dòng thôi: "Làm sao cho heap đỡ rác và cố gắng cấp phát bộ nhớ hợp lý, tránh việc cấp phát liên tục và dư thừa". Tất nhiên, để biết cách "làm sao" thì nên đọc sách 📖.
  • Trình bày khó hiểu: Thú thật, lúc tôi mới đọc sách, tôi cũng xoắn não với một vài ví dụ, thuật ngữ mà sách sử dụng như value part,...

Cuốn sách này khá tốt nếu như bạn đã có kinh nghiệm với Go muốn viết code tối ưu hiệu năng, không muốn application mình chạy ì ạch, hay tốn nhiều bộ nhớ không đáng. Tôi cũng rất recommend bạn đọc cuốn này và tự rút ra một số cheatsheets cá nhân để có thể áp dụng ngay khi code.

Thuật ngữ trong sách sẽ hơi khó hiểu khi bạn mới tìm hiểu giai đoạn đầu. Tôi có viết 2 bài được tham khảo từ cuốn sách, tôi nghĩ bạn chỉ cần hiểu được 2 bài này, thì việc bạn đọc cuốn sách này sẽ trở nên dễ dàng hơn.

Memory Alignment là gì?
Trong Go, size thực tế của struct không chỉ là tổng size các field. Compiler sẽ chèn padding để bảo đảm memory alignment, nên thứ tự khai báo field có thể làm tổng size thay đổi. Sắp xếp field hợp lý giúp giảm lãng phí bộ nhớ và đôi khi cải thiện hiệu quả cache.
Go Memory Allocation là gì? Cách Go quản lý bộ nhớ và tối ưu RAM
Khám phá cách Go quản lý bộ nhớ và các kỹ thuật tối ưu hóa giúp tiết kiệm RAM, tăng hiệu năng.

Bạn có thể tham khảo sách tại đây.

Bình luận