varspace() returns the number of bytes allocated to each variable specified by
its name or directly provided. When an heterogenous container like a list, a
cells array or a structure is provided, the vector or matrix of numbers of bytes
allocated to their components is returned.
varspace() will be useful to optimize algorithms using a lot of intermediate
memory, or simply to get aware about memory consumption w.r.t. to data types and
sizes.
Help page, examples and results follow.
--> varspace
 Memory space taken by specified variables, litterals, or containers components
 CALLING SEQUENCES
 -----------------
 varspace              // displays this help
 varspace var1 var2 ...
 vm = varspace("var1", "var2", ...)
 Vm = varspace(VarNames)
 Vm = varspace(obj#1)
 VM = varspace(obj#1, obj#2, ...)
 PARAMETERS
 ----------
 var1, var2,.. :
        Words = names of variables that's memory space must be
        returned or displayed.
 VarNames :
        Vector or matrix of non-empty words = variables names
 vm :   Row of decimal numbers = memory space allocated to associated
        variables, in bytes.
 Vm :   Vector or matrix of decimal numbers, having the size of
        VarNames or obj#1.
        Vm(i)   = memory allocated to the variable named VarNames(i)
                   or to the component obj#1(i).
        Vm(i,j) = memory allocated to the variable named VarNames(i,j)
                   or to the component obj#1(i,j).
 obj#1, obj#2,.. :
        Literal objects, or variables of simple data type, or
        heterogeneous containers (Lists, Cells arrays, Structures
        arrays). If a component C is itself a container, varspace()
        is not recursively applied to its components: Only its whole
        varspace is returned at the C position.
 VM :   List of vectors or matrices of decimal numbers.
        VM(i) has the size of obj#i. It provides the vector or matrix
        of numbers of bytes allocated to the components of obj#i:
        - literal objects or expressions: the object or the result
          of the expression is first assigned to a temporary variable.
          The memory space taken by this one is returned.
        - words or texts (scalar, vector or matrix): are considered
          as objects in their own, not as names of variables to be
          byte-sized.
 DESCRIPTION
 -----------
  For a series of scilab variables, varspace() returns the respective
   amounts of allocated memory, in bytes.
  If a queried variable or a component of a list or stucture does
   not exist, a memory amount == -1 is returned.
  NOTE: Only local variables are seen. To make a global variable locally
   visible, please apply global() to it before calling varspace().
  NOTE: If two variables with the same name are defined in the local
   and the global spaces and are queried, only the local one is
   considered.
 EXAMPLES
 --------
    clear d
    a = 1, b = [1 2], c = [1 2 3], e = [], es = '', s1 = 'a', s2 = 'ab'
    ec = cell(); ec22 = cell(2,2); ec44 = cell(4,4); ec88 = cell(8,8);
// Specifying names of variables
// -----------------------------
    varspace ec ec22 ec44 ec88 // inline syntax (then without coma)
    varspace('a,b ,c, d, e,es, s1,s2, ec22 ec88, a')
    varspace(['a' 'b' 'c' ; 'd' 'ec' 'a']) // matrix of variables names
// Specifying objects
// ------------------
//  Matrix of texts considered as an object (because '' can't be the name 
//   of a variable) :
    varspace(['a' 'b' 'c' ; 'd' 'e' ''])
// Containers like a cells array: the memory allocated to each array's 
//  component is returned:
    c = makecell([2,3], %t,%pi,%z, list('hello',rand(3,5)),'',rand(1,3)<0.5)
// The memory allocated to the cell is greater than the sum of
//  memory allocated to its components:
    varspace(c)
    sum(varspace(c)), varspace("c")
// This is also the case for lists, that can have undefined components:
    m = rand(100,100);
    L = list(m, m+%i*m, , m<0.5, int8(m), int16(m), int32(m));
    varspace('m', L)  // Since L is an object, 'm' is considered
                      //  as a simple string (another object),
                      //  instead of a variable's name
// To get the varspace of a litteral string, you may embed it in a list:
   varspace(list("a,b ,c, d, e,es, s1,s2, ec22 ec88, a"))
// .. or priorly assign it to a variable:
    s = "a,b ,c, d, e,es, s1,s2, ec22 ec88, a";
    varspace s
 SEE ALSO:
  * who : http://help.scilab.org/docs/current/en_US/who.html
  * http://wiki.scilab.org/Memory%20representation%20of%20variables
RESULTS OF EXAMPLES
===================
--> clear d    // d does no longer exist
--> a = 1; b = [1 2]; c = [1 2 3]; e = []; es = ''; s1 = 'a'; s2 = 'ab';
--> ec = cell(); ec22 = cell(2,2); ec44 = cell(4,4); ec88 = cell(8,8); 
-->
--> // Specifying names of variables
--> // -----------------------------
--> varspace ec ec22 ec44 ec88 
 ans  =
    160.    240.    480.    1440.  
 
--> varspace('a,b ,c, d, e,es, s1,s2, ec22 ec88, a')
 ans  =
    16.    32.    40.  - 1.    16.    32.    32.    32.    240.    1440.    16. 
 
--> varspace(['a' 'b' 'c' ; 'd' 'ec' 'a']) 
 ans  = 
    16.    32.     40.  
  - 1.     160.    16.  
 
-->// Specifying objects 
-->// ------------------
 
--> varspace(['a' 'b' 'c' ; 'd' 'e' ''])
 ans  =
    64.  
  
--> c=makecell([2,3],%t,%pi,%z,list('hello',rand(3,5)),'',rand(1,3)<0.5)
 c  =
!%t        3.1415927  z           !
!                                 !
!{2 list}  ""         [%f,%t,%f]  !
 
--> varspace(c)
 ans  =
    24.     24.    56.  
    208.    32.    24.  
 
--> sum(varspace(c)), varspace("c")
 ans  =
    368.  
 ans  =
    552.  
 
--> m = rand(100,100);
--> L = list(m, m+%i*m, , m<0.5, int8(m), int16(m), int32(m));
--> varspace('m', L) 
 ans  =
       ans(1)
    32.  
       ans(2)
    80016.    160016.  - 1.    40016.    10024.    20024.    40024.