libgit2 / libgit2/libgit2sharp
ObjectId are materialized too early in git_odb_foreach
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- C#
- Star
- 3.5k
- Fork
- 925
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
When enumerating objects in an ObjectDatabase, all ObjectId_s are materialized before enumeration. In a reasonable active repostory this results in a large working set and delay of processing.
-
Proxy should provide an equivalent of git_odb_foreach that is lazy/on-demant and does not materialize all ObjectId_s. (https://github.com/libgit2/libgit2sharp/blob/7f59d22c4fdb7b3d14511aca567e64eefaa43ab2/LibGit2Sharp/Core/Proxy.cs#L1557)
-
ObjectDatabase should use the lazy enumerator from Proxy instead of the ICollection (https://github.com/libgit2/libgit2sharp/blob/7f59d22c4fdb7b3d14511aca567e64eefaa43ab2/LibGit2Sharp/ObjectDatabase.cs#L44)
Hướng dẫn đóng góp
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.
Hướng nghiên cứu
Đọc LibGit2Sharp/Core/Proxy.cs quanh dòng 1557 và ObjectDatabase.cs quanh dòng 44. Theo dõi cách ObjectId_s hiện đang được cung cấp và xác định cách phép liệt kê của Proxy có thể duy trì ở trạng thái lazy; hoàn tất khi ObjectDatabase liệt kê mà không materialize trước mọi ObjectId_s.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- csharp, git
- Lĩnh vực
- devtools, performance
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100