#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "utils.h"
int main (int argc, char **argv)
{
int na, narrays = 100, arraysize = 1024;
int cgfile, cgbase;
char name[33];
float *array;
double start, end;
static char *fname = "array.cgns";
if (argc > 1) {
narrays = atoi (argv[1]);
if (argc > 2)
arraysize = atoi (argv[2]);
}
printf ("writing %d arrays of size %d\n", narrays, arraysize);
array = (float *) malloc (arraysize * sizeof(float));
if (NULL == array) {
fprintf (stderr, "malloc failed\n");
exit (1);
}
for (na = 0; na < arraysize; na++)
array[na] = (float)na;
unlink (fname);
start = elapsed_time ();
if (cg_open (fname, MODE_WRITE, &cgfile) ||
cg_base_write (cgfile, "Base", 3, 3, &cgbase) ||
cg_goto (cgfile, cgbase, NULL) ||
cg_user_data_write ("Data") ||
cg_goto (cgfile, cgbase, "UserDefinedData_t", 1, NULL))
cg_error_exit();
for (na = 1; na <= narrays; na++) {
sprintf (name, "Array%d", na);
if (cg_array_write (name, RealSingle, 1, &arraysize, array))
cg_error_exit ();
}
if (cg_close(cgfile)) cg_error_exit();
end = elapsed_time ();
printf ("time = %g secs, size = %g Mb\n",
end - start, file_size(fname));
#if 0
puts ("rewriting the file");
fflush (stdout);
start = elapsed_time ();
if (cg_open (fname, MODE_MODIFY, &cgfile)) cg_error_exit();
cgbase = 1;
if (cg_goto (cgfile, cgbase, "UserDefinedData_t", 1, NULL))
cg_error_exit();
for (na = 1; na <= narrays; na++) {
sprintf (name, "Array%d", na);
if (cg_array_write (name, RealSingle, 1, &arraysize, array))
cg_error_exit ();
}
if (cg_close(cgfile)) cg_error_exit();
end = elapsed_time ();
printf ("time = %g secs, size = %g Mb\n",
end - start, file_size(fname));
#endif
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1