nói dối e blog

Nhân Dân Có Thể Tạo Ra Chính Sách, Nhưng Không Thể Biết Rõ Chúng.

DÂN HOẠCH DIỄN THIẾT, CHỈ HƯỚNG DẪN ĐƯỜNG ĐI

Hai hôm nay trước khi đi ngủ tôi thường lật giở Luận Ngữ, hôm qua đọc đến thiên Thái Bá thấy câu “Dân khả sử do chi, bất khả sử tri chi”. Câu này thường được giải thích là: Có thể dẫn dắt nhân dân đi theo con đường đúng đắn, nhưng không nhất thiết phải cho họ hiểu lý do đằng sau. Đây là lời dạy của Khổng Tử (có ghi rõ “Tử viết” ở phần đầu).

Nói Chuyện Về Java

Hôm nay nhận được một lá thư từ độc giả, vô tình theo địa chỉ email tìm đến blog của anh ấy. Thấy anh ấy đang bàn luận về Java, tôi liền nhớ lại những suy nghĩ cũ và muốn chia sẻ vài điều. Trang blog đó có thể xem tại đây:

Cách đây năm năm, khi tôi còn là một tín đồ trung thành của C++, từng có thời kỳ cực kỳ khinh thường Java. Có lẽ vẫn còn người nhớ tấm danh thiếp cá nhân tôi in khi làm lập trình viên tự do thời bấy giờ - trên đó thậm chí còn ghi dòng chữ “Tôi không quan tâm đến Java” một cách đầy kiêu ngạo.

Phương Pháp Thu Gom Rác Dựa Trên Xử Lý Song Song

Hệ thống máy ảo đang phát triển gần đây của tôi hoạt động dựa trên cơ chế thu gom rác (garbage collection), sử dụng thuật toán đánh dấu và sắp xếp (mark-compact). Đặc điểm nổi bật của phương pháp này là không yêu cầu lượng bộ nhớ phụ lớn, đồng thời có khả năng loại bỏ hoàn toàn phân mảnh bộ nhớ. Những vùng nhớ được giữ lâu dài sẽ được nén về phía đáy khối bộ nhớ, không cần di chuyển trong quá trình dọn dẹp.

So Sánh Giữa Các Máy Ảo, Triển Khai Của Lua 5

Sau khi hoàn thành máy ảo và trình biên dịch cá nhân, tôi từng tiến hành so sánh hiệu năng với Lua 5. Kết quả thu được khá thất vọng - máy ảo của tôi chỉ đạt khoảng 50-60% tốc độ của Lua 5. Điều này khiến tôi không phục, nên đã dành thời gian nghiên cứu mã nguồn Lua 5 kỹ hơn. Thực tế trước đó tôi đã từng đọc qua mã nguồn Lua từng phần, thậm chí nghiên cứu cả Lua 4 và Lua 5 vào những giai đoạn khác nhau, dĩ nhiên tôi hiểu rõ sự khác biệt mang tính cách mạng giữa hai phiên bản này.

Thêm Loại Chuỗi Vào Tập Lệnh

Gần đây, công việc chính của tôi là bổ sung kiểu chuỗi (string) cho máy ảo, đồng thời cho phép trình biên dịch tạo ra bytecode tương ứng. Ý tưởng khá đơn giản: làm theo cách của Lua, gộp tất cả các chuỗi giống nhau trong mã nguồn thành một bản duy nhất trong bytecode. Những vị trí tham chiếu chuỗi đó sẽ trực tiếp trỏ đến bản duy nhất này. Khi bytecode chạy, mọi chuỗi mới được tạo ra trong quá trình thực thi sẽ được cấp phát riêng biệt và sẽ được thu gom rác (garbage collection) dọn dẹp khi cần.

Tối Ưu Hóa _Ftol: Hành Trình Cải Thiện Hiệu Năng Chuyển Đổi Kiểu Số Thực Sang Nguyên

Trong quá trình lập trình C, mỗi khi bạn thực hiện phép chuyển đổi kiểu dữ liệu từ float sang int bằng cú pháp (int)float_v, trình biên dịch sẽ tự động sinh ra lời gọi tới hàm CRT có tên _ftol. Câu chuyện tối ưu hóa hàm hệ thống này bắt đầu từ thập niên 90, khi một người bạn làm về đồ họa 3D chia sẻ rằng phiên bản _ftol được triển khai bằng lệnh x87 có hiệu năng chậm đáng kể, nên ưu tiên sử dụng các phép toán nguyên để thay thế.

0%