Bối cảnh: Tôi đang cố gắng tạo một ngôn ngữ D thực hiện thuần túy chức năng tương đương với C's memchr nhưng sử dụng mảng và chỉ mục thay vì con trỏ. Lý do là std.string sẽ làm việc với việc đánh giá hàm thời gian biên dịch. Đối với những người không quen thuộc với W/D, các chức năng có thể được đánh giá vào thời gian biên dịch nếu các hạn chế nhất định được đáp ứng. Một hạn chế là họ không thể sử dụng con trỏ. Khác là họ không thể gọi hàm C hoặc sử dụng ngôn ngữ lắp ráp nội tuyến. Việc chuỗi thư viện hoạt động vào thời gian biên dịch rất hữu ích đối với một số đoạn mã thời gian biên dịch gen.Làm thế nào để memchr() làm việc dưới mui xe?
Câu hỏi: Memchr hoạt động như thế nào dưới mui xe để hoạt động nhanh như vậy? Trên Win32, bất cứ thứ gì mà tôi có thể tạo ra trong D thuần túy bằng cách sử dụng các vòng lặp đơn giản ít nhất là 2x kỹ thuật tối ưu hóa rõ ràng như tắt kiểm tra giới hạn, bỏ vòng lặp, v.v. một cái gì đó đơn giản như việc tìm kiếm một ký tự trong một chuỗi?
Cảm ơn, ngoại trừ đây là mã LGPL và thư viện chuẩn của D được cho là được cấp phép theo giấy phép. Tôi không muốn đó là một vấn đề. – dsimcha
Vâng, tôi đã đề nghị bạn xem nó để lấy cảm hứng về kỹ thuật, thay vì sao chép nguồn. – Chris
Đó là khoảng 150 dòng mã, khoảng một nửa hoặc nhiều hơn là các bình luận, vì vậy nó giải thích các tối ưu hóa với số lượng chi tiết hợp lý. – Chris