IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 7759


Ignore:
Timestamp:
Jun 29, 2006, 11:00:41 AM (20 years ago)
Author:
Paul Price
Message:

Instead of doing open/close each time we want to read (which is really expensive), we hold an array of file pointers. This should make for a significant boost in speed.

Location:
trunk/ppMerge/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppMerge/src/ppMergeCheckInputs.c

    r7580 r7759  
    3131        data->in->n = filenames->n;
    3232    }
     33    if (!data->files) {
     34        data->files = psArrayAlloc(filenames->n);
     35        data->files->n = filenames->n;
     36    }
    3337    int numGood = 0;                    // Number of good files
    3438    for (int i = 0; i < filenames->n; i++) {
     
    5155            psMetadataPrint(stdout, header, 9);
    5256        }
    53         psFitsClose(inFile);
     57        data->files->data[i] = inFile;
    5458
    5559        // The formats must be identical.  The chief reason for this is so that we know what output format to
  • trunk/ppMerge/src/ppMergeCombine.c

    r7744 r7759  
    6868                        continue;
    6969                    }
    70                     psFits *fits = psFitsOpen(filenames->data[k], "r"); // FITS file handle
     70                    psFits *fits = data->files->data[k]; // FITS file handle
    7171                    if (!fits) {
    7272                        psError(PS_ERR_IO, false, "Unable to open input file %s --- ignored.\n",
     
    9191                        numRead++;
    9292                    }
    93                     psFitsClose(fits);
    9493                }
    9594
  • trunk/ppMerge/src/ppMergeData.c

    r7073 r7759  
    99    )
    1010{
     11    if (data->files) {
     12        for (long i = 0; i < data->files->n; i++) {
     13            psFitsClose(data->files->data[i]);
     14            data->files->data[i] = NULL;
     15        }
     16        psFree(data->files);
     17    }
    1118    psFree(data->in);
    1219    psFree(data->out);
     
    2330
    2431    data->numCells = 0;
     32    data->files = NULL;
    2533    data->in = NULL;
    2634    data->out = NULL;
  • trunk/ppMerge/src/ppMergeData.h

    r7073 r7759  
    88typedef struct {
    99    int numCells;                       // Number of (valid) cells in the FPA
     10    psArray *files;                     // Input file pointers
    1011    psArray *in;                        // Input FPA structures
    1112    pmFPA *out;                         // Output FPA structure
  • trunk/ppMerge/src/ppMergeScaleZero.c

    r7355 r7759  
    176176        }
    177177        psTrace(__func__, 9, "Opening %s to get background...\n", name);
    178         psFits *inFile = psFitsOpen(filenames->data[i], "r"); // The FITS file to read
    179         if (!inFile) {
    180             psLogMsg(__func__, PS_LOG_WARN, "Unable to open input file %s --- ignored.\n", name);
    181             status = false;
    182             continue;
    183         }
    184 
     178        psFits *inFile = data->files->data[i]; // The FITS file to read
    185179        pmFPA *fpa = data->in->data[i]; // The FPA for this input
    186180        int cellNum = -1;               // Number of the cell
     
    282276        }
    283277        pmFPAFreeData(fpa);
    284         psFitsClose(inFile);
    285278    }
    286279    psFree(bgStats);
Note: See TracChangeset for help on using the changeset viewer.