2016-01-31 5 views
7

So che la funzione whos() darà la dimensione di tutti gli oggetti in memoria. Questo può essere piuttosto lento da eseguire, e a volte può fallire su determinati oggetti, facendo appendere l'intera funzione. C'è un modo per ottenere la dimensione in memoria di un oggetto specifico, simile alla funzione sys.getsizeof() in Python?Trova la dimensione del singolo oggetto nella memoria

risposta

12

whos() accetta regular expressions per abbinare i nomi degli oggetti, in modo da poter usare qualcosa come

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

per ottenere informazioni su x. Per la dimensione in byte utilizzare

Base.summarysize(x) 
4

È possibile utilizzare la funzione 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

che è stato inaspettato, 'x' non è né una stringa o un tipo. – amrods

+1

Sì, inaspettatamente, se si legge solo la descrizione, è possibile aprire un PR o un problema con i documenti, per aggiungere questo se lo si desidera, non posso farlo ora, ma cercherò di farlo in un altro momento, dovrebbe essere abbastanza facile da fare – SalchiPapa

+1

Forse dovrebbe leggere 'sizeof (x) \ n Dimensione, in byte, della rappresentazione binaria canonica dell'oggetto x' per questo metodo' sizeof (x) a essentials.jl: 87 ' – SalchiPapa