MB I sometimes want to compute the size which is required by a multi-dimensionnal array. Now the arraybytesize package does the computation for me :

The single thing to remember is the map from basic data types to the number of bytes required to store them. The following is the map used in arraybytesize :

        shortinteger (8 bits) : 2 bytes
        integer (32 bits) : 4 bytes
        longinteger (32 bits) : 4 bytes
        longlonginteger (64 bits) : 8 bytes
        singlereal (32 bits) : 4 bytes
        doublereal (64 bits) : 8 bytes

The following is an example of a basic use of the "bytesize" method. The memory needed to store a 3500 x 3500 integer matrix is equal to 49.0 MB (which is more human-readable than 49000000 bytes isn'it ?).

     set myarray [arraybytesize create %AUTO%]
     $myarray configure -rank 2
     $myarray configure -verbose 1
     $myarray setdimension 0 3500
     $myarray setdimension 1 3500
     set size [$myarray size]
     set bytesize [$myarray bytesize]
     set hrbytesize [$myarray bytesize 1]
     $myarray destroy

See also