Changeset: a575af5c1d23 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a575af5c1d23
Modified Files:
        sql/backends/monet5/vaults/netcdf/netcdf.c
Branch: nested
Log Message:

improved loading performance


diffs (43 lines):

diff --git a/sql/backends/monet5/vaults/netcdf/netcdf.c 
b/sql/backends/monet5/vaults/netcdf/netcdf.c
--- a/sql/backends/monet5/vaults/netcdf/netcdf.c
+++ b/sql/backends/monet5/vaults/netcdf/netcdf.c
@@ -1050,30 +1050,31 @@ HDF5dataset(Client ctx, MalBlkPtr mb, Ma
     //printf("First element of train[0][0]: %f\n", buffer[0]);
 
        BAT **bats = (BAT**)ma_zalloc(ta, sizeof(BAT*) * pci->retc);
-       if (!bats) {
+       dbl **dbls = (dbl**)ma_zalloc(ta, sizeof(dbl*) * pci->retc);
+       if (!bats || !dbls) {
                ma_close(&ta_state);
                throw(MAL, "netcdf.HDF5dataset", SQLSTATE(HY013) 
MAL_MALLOC_FAIL);
        }
 
        for(int i = 0; i < pci->retc; i++) {
-               bats[i] = COLnew(0, getBatType(getArgType(mb, pci, i)), 10, 
TRANSIENT);
+               bats[i] = COLnew(0, getBatType(getArgType(mb, pci, i)), rows, 
TRANSIENT);
                if (!bats[i]) {
                        msg = createException(MAL, "netcdf.HDF5dataset", 
SQLSTATE(HY013) MAL_MALLOC_FAIL);
                        goto bailout;
                }
+               dbls[i] = Tloc(bats[i], 0);
        }
        // loop over load data
-       for (size_t i=0; i<rows*cols; i++) {
-               double v = buffer[i];
-               size_t j = i%cols;
-               if ((BUNappend(bats[j], &v, false) != GDK_SUCCEED)) {
-                       msg = createException(MAL, "netcdf.HDF5dataset", "Error 
appending value %f", v);
-                       goto bailout;
+       for (size_t r=0; r<rows; r++) {
+               for(BUN c=0; c<cols; c++, buffer++) {
+                       dbls[c][r] = *buffer;
                }
        }
 
        for(int i = 0; i < pci->retc && bats[i]; i++) {
                *getArgReference_bat(stk, pci, i) = bats[i]->batCacheid;
+               BATsetcount(bats[i], rows);
+               BATnegateprops(bats[i]);
                BBPkeepref(bats[i]);
        }
        ma_close(&ta_state);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to