Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Câu nói nổi tiếng "premature optimization is the root of all evil" (tối ưu sớm là gốc rễ của mọi điều xấu) được gắn với nhà khoa học máy tính Donald Knuth. Nhưng nhiều người trích dẫn nó thiếu ngữ cảnh. Bài này giúp bạn hiểu ý nghĩa thật sự: khi nào nên tối ưu, khi nào nên chờ.
Đó là việc bỏ công làm code nhanh hơn hoặc tiết kiệm bộ nhớ hơn trước khi bạn biết nó có phải vấn đề thật hay không. Biểu hiện thường gặp:
Trích dẫn đầy đủ của Knuth nói rằng nên quên đi những cải thiện nhỏ nhặt trong khoảng 97% thời gian, nhưng không được bỏ qua cơ hội trong 3% còn lại, những phần thật sự quan trọng. Nghĩa là: đừng tối ưu bừa, nhưng cũng đừng viết code chậm một cách thiếu suy nghĩ.
Có những quyết định hiệu năng nên cân nhắc ngay từ đầu vì khó sửa sau này:
// Phiên bản dễ hiểufunction getActiveUserNames(users) {return users.filter(user => user.isActive).map(user => user.name);}// Phiên bản "tối ưu" một lần duyệtfunction getActiveUserNames(users) {const names = [];for (let i = 0; i < users.length; i++) {if (users[i].isActive) names.push(users[i].name);}return names;}Với vài nghìn người dùng, sự khác biệt thường không đáng kể và phiên bản đầu dễ đọc hơn. Chỉ khi đo thấy đây là điểm nghẽn thật sự thì mới đáng đổi.
Những điều này gần như không làm code phức tạp thêm mà mang lại lợi ích rõ ràng.
Hãy viết code đúng, rõ ràng trước; lựa chọn thuật toán và thiết kế hợp lý ngay từ đầu; còn vi tối ưu thì chờ số liệu đo đạc quyết định. Như thế bạn vừa tránh được code phức tạp không cần thiết, vừa không bỏ lỡ những điểm đáng tối ưu thật.
Muốn hiểu sâu về thuật toán và hiệu năng, bạn có thể xem các khóa học liên quan tại codebem.com.
Nguyễn Đình Cường
0 comment