#include <stdio.h>
#include "../../IV.h"
#include "../../Utilities.h"
#include "../../timings.h"
/*--------------------------------------------------------------------*/
/*
---------------------------------------------------------------
this program tries to get some idea of the malloc()/free()
characteristics of a machine and operating system. it was
written to try and understand the initialization times for
the FrontMtx object for the i4a matrix with 99192 rows and
columns.
the program reads in a vector that contains the byte counts
for the factor submatrices. depending on the input parameters,
the program allocates the storage and then free'ing the storage.
zeroflag --
0 --> do not zero the storage
otherwise --> zero the storage
sortflag --
0 --> do not sort the byte counts in ascending order
otherwise --> sort the byte counts in ascending order
created -- 98sep05, cca
---------------------------------------------------------------
*/
int
main ( int argc, char *argv[] ) {
double t1, t2 ;
double *dvec ;
double **pdvecs ;
int item, nitem, sortflag, sum, zeroflag ;
int *nbytes ;
IV *nbytesIV ;
if ( argc != 3 ) {
fprintf(stdout, "\n usage : a.out zeroflag sortflag ") ;
return(1) ;
}
zeroflag = atoi(argv[1]) ;
sortflag = atoi(argv[2]) ;
if ( zeroflag == 0 ) {
fprintf(stdout, "\n storage not zero'd") ;
} else {
fprintf(stdout, "\n storage zero'd") ;
}
if ( sortflag == 0 ) {
fprintf(stdout, "\n byte counts not sorted") ;
} else {
fprintf(stdout, "\n byte counts sorted") ;
}
/*
-------------------------------------------------
read in the vector that contains the bytes counts
for the SubMtx objects from the i4a matrix
-------------------------------------------------
*/
nbytesIV = IV_new() ;
IV_readFromFile(nbytesIV, "nbytes.ivf") ;
IV_sizeAndEntries(nbytesIV, &nitem, &nbytes) ;
sum = IV_sum(nbytesIV) ;
fprintf(stdout, "\n %d items read in, sum = %d",
nitem, sum) ;
fflush(stdout) ;
if ( sortflag != 0 ) {
IVqsortUp(nitem, nbytes) ;
}
/*
------------------------------------
now time the malloc()'s and free()'s
------------------------------------
*/
pdvecs = PDVinit(nitem) ;
if ( zeroflag == 0 ) {
MARKTIME(t1) ;
for ( item = 0 ; item < nitem ; item++ ) {
pdvecs[item] = DVinit2(nbytes[item]/sizeof(double)) ;
}
MARKTIME(t2) ;
fprintf(stdout, "\n CPU %10.5f for DVinit2", t2 - t1) ;
MARKTIME(t1) ;
for ( item = 0 ; item < nitem ; item++ ) {
DVfree(pdvecs[item]) ;
}
MARKTIME(t2) ;
fprintf(stdout, "\n CPU %10.5f for DVfree", t2 - t1) ;
} else {
MARKTIME(t1) ;
for ( item = 0 ; item < nitem ; item++ ) {
pdvecs[item] = DVinit(nbytes[item]/sizeof(double), 0.0) ;
}
MARKTIME(t2) ;
fprintf(stdout, "\n CPU %10.5f for DVinit", t2 - t1) ;
MARKTIME(t1) ;
for ( item = 0 ; item < nitem ; item++ ) {
DVfree(pdvecs[item]) ;
}
MARKTIME(t2) ;
fprintf(stdout, "\n CPU %10.5f for DVfree", t2 - t1) ;
}
fprintf(stdout, "\n") ;
fflush(stdout) ;
return(1) ; }
/*--------------------------------------------------------------------*/
syntax highlighted by Code2HTML, v. 0.9.1