Kiểm tra mức sử dụng bộ nhớ mongodb

Bạn thực sự đã nhận được một hình ảnh không hoàn chỉnh về việc sử dụng bộ nhớ trong trường hợp này. Tổng kích thước của một từ điển nhiều hơn gấp đôi trong các khoảng thời gian không đều và nếu bạn so sánh kích thước của hai cấu trúc này ngay sau khi kích thước từ điển được tăng lên, nó sẽ lớn hơn. Một tập lệnh đơn giản với kích thước đệ quy hàm [xem mã bên dưới] hiển thị một mẫu rõ ràng

Nội dung chính Hiển thị

  • Giới thiệu
  • bộ dữ liệu
  • thí nghiệm
  • Danh sách từ điển
  • Danh sách từ điển
  • Danh sách từ điển
  • Từ điển Python có chiếm rất nhiều bộ nhớ không?
  • Từ điển có nhanh hơn danh sách Python không?
  • Tại sao Dict nhanh hơn danh sách?
  • Bao nhiêu bộ nhớ mà một danh sách bị mất trong Python?

i:  2  list size:  296  dict size:  328  difference:  -32
i:  3  list size:  392  dict size:  352  difference:  40
i:  4  list size:  488  dict size:  376  difference:  112
i:  5  list size:  616  dict size:  400  difference:  216
i:  7  list size:  808  dict size:  1216  difference:  -408
i:  10  list size:  1160  dict size:  1288  difference:  -128
i:  13  list size:  1448  dict size:  1360  difference:  88
i:  17  list size:  1904  dict size:  1456  difference:  448
i:  23  list size:  2480  dict size:  3904  difference:  -1424
i:  31  list size:  3328  dict size:  4096  difference:  -768
i:  42  list size:  4472  dict size:  4360  difference:  112
i:  56  list size:  5912  dict size:  4696  difference:  1216
i:  74  list size:  7880  dict size:  5128  difference:  2752
i:  100  list size:  10520  dict size:  14968  difference:  -4448
i:  133  list size:  14024  dict size:  15760  difference:  -1736
i:  177  list size:  18672  dict size:  16816  difference:  1856

Mô hình này tiếp tục khi i phát triển. . Hủy bỏ lợi ích bộ nhớ của danh sách trên từ điển. Nhưng kết quả, trung bình, không phải là từ điển tốt hơn; . Vì vậy, để trả lời cho câu hỏi ban đầu của bạn

Khi bạn muốn lưu trữ nhiều giá trị khóa dữ liệu trong bộ nhớ, cấu trúc dữ liệu nào tiết kiệm bộ nhớ hơn, một lệnh hoặc một danh sách các bộ dữ liệu?

Nó không thực sự quan trọng nếu tất cả những gì bạn quan tâm đều đáng nhớ

Tuy nhiên, lưu ý rằng việc lặp lại từ điển thường chậm hơn một chút so với việc lặp lại trong danh sách, bởi vì không có cách nào tốt để tránh lặp lại trên tất cả các thùng rỗng trong từ điển. Vì vậy, có một chút sự thay đổi từ điển - từ nhanh hơn [nhiều] trong quá trình tìm kiếm chính ngẫu nhiên, nhưng danh sách [một chút] nhanh hơn khi lặp lại. Từ điển có thể sẽ tốt hơn hầu hết thời gian, nhưng trong một số trường hợp cũ, danh sách có thể cung cấp tối ưu hóa vi mô

This is check size code. Nó có thể sẽ không tạo ra kết quả chính xác cho tất cả các góc hợp, nhưng nó nên xử lý các cấu trúc đơn giản như thế này mà không gặp vấn đề gì. [Nhưng hãy cho tôi biết nếu bạn gặp bất kỳ vấn đề nào. ]

import sys, collections, itertools, math

def totalsize[x]:
    seen = set[]
    return ts_rec[x, seen]

def ts_rec[x, seen]:
    if id[x] in seen:
        return 0
    else:
        seen.add[id[x]]

    x_size = sys.getsizeof[x]
    if isinstance[x, collections.Mapping]:
        kv_chain = itertools.chain.from_iterable[x.iteritems[]]
        return x_size + sum[ts_rec[i, seen] for i in kv_chain]
    elif isinstance[x, collections.Sequence]:
        return x_size + sum[ts_rec[i, seen] for i in x]
    else:
        return x_size

for i in [10 ** [e / 8.0] for e in range[3, 19]]:
    i = int[i]
    lsize = totalsize[[[x, x] for x in xrange[i]]]
    dsize = totalsize[dict[[x, x] for x in xrange[i]]]

    print "i: ", i,
    print " list size: ", lsize, " dict size: ", dsize,
    print " difference: ", lsize - dsize

Giới thiệu

Trong bài đăng này, chúng tôi muốn đánh giá dấu chân bộ nhớ trong Python 3 của dữ liệu được lưu trữ ở các bảng định dạng khác nhau. Cụ thể, chúng tôi muốn so sánh các khung dữ liệu với các cấu trúc dữ liệu giống JSON như danh sách từ điển và từ điển của danh sách

Trên đây là 3 cách khác nhau để lưu trữ dữ liệu giống như bảng. Dữ liệu giống như bảng về cơ bản là dữ liệu được biểu thị bằng các hàng và cột. Trong bài kiểm tra này, chúng tôi sẽ bỏ qua bất kỳ câu hỏi nào liên quan đến đọc/ghi hiệu quả hoặc tra cứu. Chúng tôi hoàn toàn quan tâm đến một câu hỏi. cách tiếp cận nào sẽ giúp chúng tôi tiết kiệm nhiều trí nhớ nhất?

bộ dữ liệu

Chúng tôi tạo ra một bộ dữ liệu thử nghiệm vô nghĩa [nhưng rất lớn] cho thí nghiệm này, sử dụng danh sách một số giống chó phổ biến. Danh sách này chắc chắn hoàn toàn không có thiên vị, và tất cả chúng ta chắc chắn là những con chó

Để chắc chắn rằng thử nghiệm đủ chung cho hầu hết các trường hợp sử dụng, chúng tôi chắc chắn rằng bộ dữ liệu này có ít nhất ba loại dữ liệu nguyên thủy. STR, INT và FLOAT

thí nghiệm

Chúng tôi chạy các tính toán đơn giản cho từng biến có thể cấu trúc dữ liệu

khung dữ liệu

Đo lường bộ nhớ của DataFrames tương đối đơn giản và có thể được thực hiện với chức năng tổng hợp đơn giản. DataFrame.memory_usage

This thing for the results

Danh sách từ điển

Bật danh sách từ điển không đơn giản như ở trên

Để có được kích thước của cấu trúc dữ liệu Python bản địa, chúng ta có thể sử dụng phương pháp sys.getsizeof. Tuy nhiên, điều này chỉ cung cấp cho chúng ta kích thước [tính bằng byte] của đối tượng chính, mà không bao gồm kích thước của các phần tử lồng nhau

Chủ Đề