`create_dir_all` performs a quadradic number of system calls
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 38/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- rust
- Lĩnh vực
- operating-systems, security
Hướng nghiên cứu
Bắt đầu bằng cách đọc các triển khai mkdir và open_manually hiện có của cap-primitives, sau đó kiểm tra các routine create_dir_all của cap-std và cap-async-std, những routine này nên sử dụng primitive mới. Công việc hoàn tất khi việc tạo component sử dụng các directory handle, xử lý AlreadyExists và .. bằng một handle stack, và các routine cấp cao hơn ủy quyền cho nó.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
create_dir_all uses the algorithm from libstd for recursively creating all components. However, cap-primitives' mkdir function performs a system call per path component per call, so calling it once per path component leads to a quadratic number of system calls.
We should add a create_dir_all function in cap-primitives which, for each path component, creates a directory for that component (ignoring a io::ErrorKind::AlreadyExists error), opens the newly created directory, and then uses the resulting handle as the base for handling the next component.
Similar to open_manually, it should handle .. components by keeping a stack of handles as it goes, so that it can simply pop an entry from that stack to ascend to the parent.
And then, the cap-std and cap-async-std create_dir_all routines can use it.
- Ngôn ngữ chính
- Rust
- Star
- 821
- Fork
- 59
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của bytecodealliance/cap-std
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
bytecodealliance/cap-std#427 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
bytecodealliance/cap-std#416 · 2 bình luận ·
-
Archiving cap-stdĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
bytecodealliance/cap-std#426 · 2 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
bytecodealliance/cap-std#423 · 5 bình luận ·
-
Replace cap-async-stdĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 42/100
bytecodealliance/cap-std#408 · 4 bình luận · 2 reaction ·
Tất cả issue của bytecodealliance/cap-std
Issue tương tự
-
area:casework bug criticality:p3 triage:needs-implementation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
registrystack/registry-stack#1623 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
DioxusLabs/anyrender#98 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
leptos-rs/leptos#4885 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
longbridge/gpui-kit#3276 ·
Maintainer thường phản hồi trong vòng 1 ngày