2016-01-31 12 views
7

Wiem, że funkcja whos() poda rozmiar wszystkich obiektów w pamięci. Może to być dość powolne do wykonania, a czasami kończy się niepowodzeniem na niektórych obiektach, przez co cała funkcja się zawiesi. Czy istnieje sposób na uzyskanie rozmiaru w pamięci określonego obiektu, podobnego do funkcji sys.getsizeof() w Pythonie?Znajdź rozmiar pojedynczego obiektu w pamięci

Odpowiedz

12

whos() akceptuje regular expressions dopasować nazwy obiektów, dzięki czemu można używać coś jak

x = rand(100, 100) 
whos(r"x") 

aby uzyskać informacje na x. Na wielkość w bajtach używać

Base.summarysize(x) 
4

Można użyć funkcji sizeof:

help?> sizeof 
search: sizeof 

    sizeof(s::AbstractString) 

    The number of bytes in string s. 

    sizeof(T) 

    Size, in bytes, of the canonical binary representation of the given DataType T, if any. 

julia> x = rand(100, 100); 

julia> sizeof(x) 
80000 
+1

że było nieoczekiwane, 'x' jest ani ciągiem lub rodzaj. – amrods

+1

Tak naprawdę nieoczekiwany, jeśli czyta się tylko opis, można otworzyć dokument lub numer do dokumentów, aby dodać ten wpis, jeśli chcesz, nie mogę tego teraz zrobić, ale spróbuję zrobić to innym razem, powinno być dość łatwe do zrobienia. – SalchiPapa

+1

Być może powinien przeczytać "sizeof (x) \ n Rozmiar, w bajtach kanonicznej binarnej reprezentacji obiektu x' dla tej metody' sizeof (x) w essentials.jl: 87 ' – SalchiPapa

Powiązane problemy