package ucar.nc2; import ucar.ma2.*; import java.io.IOException; import static ucar.nc2.NetcdfFileWriteable.createNew; public class TestCreateManyObjects { private static void nccreate(String filename, int nvars) { NetcdfFileWriteable ncfile = null; try { ncfile = createNew(filename); } catch (IOException e) { e.printStackTrace(); } Dimension x = ncfile.addDimension("x", 2); Dimension y = ncfile.addDimension("y", 2); Dimension z = ncfile.addDimension("z", 2); Dimension[] dim3 = new Dimension[3]; dim3[0] = x; dim3[1] = y; dim3[2] = z; int i; for (i=0; i<nvars+1; i++) { ncfile.addVariable("var" + i, DataType.FLOAT, dim3); } try { ncfile.create(); ncfile.close(); } catch (IOException e) { e.printStackTrace(); } try { long start = System.nanoTime(); NetcdfFileWriteable nc = NetcdfFileWriteable.openExisting(filename); double diff = (System.nanoTime() - start)/1000000000.0; nc.close(); double ratio = diff/nvars; System.out.println(String.format("%8d vars: %7.4f sec, %6.6f sec/var", nvars, diff, ratio)); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { String workdir = "C:/temp/"; nccreate(workdir + "testWrite10.nc", 10); nccreate(workdir + "testWrite1000.nc", 1000); nccreate(workdir + "testWrite10000.nc", 10000); nccreate(workdir + "testWrite50000.nc", 50000); } }