key insertion is linear in size of document
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
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- python
- Lĩnh vực
- performance
Hướng nghiên cứu
Bắt đầu bằng cách chạy benchmark Python inline trên đường dẫn chèn khóa bảng của tomlkit và kiểm tra cách mỗi phép gán cập nhật tài liệu. Theo dõi phần công việc tăng theo kích thước tài liệu, sau đó xác minh bản sửa bằng cách chạy lại benchmark và xác nhận rằng việc tăng gấp đôi số khóa không còn khiến tổng thời gian tăng lên khoảng bốn lần nữa.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
So inserting lots of keys is quadratic in the number of keys
#!/usr/bin/env python3
import gc
import time
import tomlkit
def insert_keys(n: int) -> float:
doc = tomlkit.parse("[t]\n")
table = doc["t"]
gc.collect()
gc.disable()
try:
start = time.perf_counter()
for i in range(n):
table[f"k{i}"] = i
elapsed = time.perf_counter() - start
finally:
gc.enable()
return elapsed
def main() -> None:
print()
print(f"{'N':>7} {'total (ms)':>12} {'us/key':>10} {'ratio':>7}")
prev = None
for n in (500, 1000, 2000, 4000, 8000):
elapsed = insert_keys(n)
total_ms = elapsed * 1e3
us_per_key = elapsed / n * 1e6
ratio = "" if prev is None else f"{elapsed / prev:6.2f}x"
print(f"{n:>7} {total_ms:12.2f} {us_per_key:10.2f} {ratio:>7}")
prev = elapsed
if __name__ == "__main__":
main()
results
N total (ms) us/key ratio
500 59.58 119.16
1000 225.36 225.36 3.78x
2000 983.92 491.96 4.37x
4000 3569.23 892.31 3.63x
8000 16247.27 2030.91 4.55x
in which each doubling of the number of keys causes the benchmark to take four times as long.
- Ngôn ngữ chính
- Python
- Star
- 850
- Fork
- 163
- Merge trung bình
- 13 phút
- Pull request đã merge (30 ngày)
- 2
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
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 python-poetry/tomlkit
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
python-poetry/tomlkit#546 · 2 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
python-poetry/tomlkit#603 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
python-poetry/tomlkit#580 · 1 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 72/100
python-poetry/tomlkit#577 ·
-
Looking for a co-maintainer Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
python-poetry/tomlkit#574 · 5 bình luận ·
Tất cả issue của python-poetry/tomlkit
Issue tương tự
-
bug confirmed issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
open-webui/open-webui#30750 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100