1/** \file
2
3Performance test from KNMI.
4
5Copyright 2009, UCAR/Unidata. See \ref copyright file for copying and
6redistribution conditions.
7*/
8
9#include <nc_tests.h>
10#include "err_macros.h"
11#include <time.h>
12#include <sys/time.h>
13#include <unistd.h>
14
15#define FILE_NAME_1 "MSGCPP_CWP_NC3.nc"
16#define FILE_NAME_2 "MSGCPP_CWP_NC4.nc"
17
18#define NDIMS3 3
19#define DATA_VAR_NAME "pr"
20#define NUM_CACHE_TRIES 1
21#define LON_DIMID 0
22#define LAT_DIMID 1
23#define BNDS_DIMID 2
24#define TIME_DIMID 3
25#define LON_LEN 256
26#define LAT_LEN 128
27#define BNDS_LEN 2
28#define TIME_LEN 1560
29#define NUM_TS 1
30
31extern const char* nc_strerror(int ncerr);
32static int
33complain(int stat)
34{
35    if(stat) {
36        fprintf(stderr,"%s\n",nc_strerror(stat));
37 fflush(stderr);
38    }
39    return stat;
40}
41
42static int
43read_file(char *filename)
44{
45#define CWP "cwp"
46#define XLEN 3712
47#define YLEN 3712
48
49   int ncidvarid;
50   struct timeval start_timeend_timediff_time;
51   short *data;
52   int time_us;
53
54   printf("**** reading file %s\n", filename);
55   if (gettimeofday(&start_timeNULL)) ERR_RET;
56   if(complain(nc_open(filenameNC_NOWRITE, &ncid))) ERR_RET;
57   if (gettimeofday(&end_timeNULL)) ERR_RET;
58   if (nc4_timeval_subtract(&diff_time, &end_time, &start_time)) ERR_RET;
59   time_us = (int)diff_time.tv_sec * MILLION + (int)diff_time.tv_usec;
60   printf("File open time (us): %d\n", (int)time_us);
61
62   if (!(data = malloc(sizeof(short) * XLEN * YLEN))) ERR;
63   if (gettimeofday(&start_timeNULL)) ERR_RET;
64   if (nc_inq_varid(ncidCWP, &varid)) ERR;
65   if (nc_get_var_short(ncidvariddata)) ERR;
66   if (gettimeofday(&end_timeNULL)) ERR_RET;
67   if (nc4_timeval_subtract(&diff_time, &end_time, &start_time)) ERR_RET;
68   time_us = (int)diff_time.tv_sec * MILLION + (int)diff_time.tv_usec;
69   printf("Data read time (us): %d\n", (int)time_us);
70   free(data);
71
72   if (nc_close(ncid))
73      ERR_RET;
74   return 0;
75}
76
77int
78main(int argc, char **argv)
79{
80   int cheader = 0, verbose = 0, timeseries = 0;
81   int ncidvaridstorage;
82   char name_in[NC_MAX_NAME + 1];
83   size_t len;
84   size_t cs[NDIMS3] = {0, 0, 0};
85   int cache = MEGABYTE;
86   int ndimsdimid[NDIMS3];
87   float hor_data[LAT_LEN * LON_LEN];
88   int read_1_usavg_read_us;
89   float ts_data[TIME_LEN];
90   size_t start[NDIMS3], count[NDIMS3];
91   int deflateshuffledeflate_level;
92   struct timeval start_timeend_timediff_time;
93
94   printf("\n*** Testing netcdf-4 vs. netcdf-3 performance.\n");
95   if (complain(read_file(FILE_NAME_1))) ERR;
96   if (complain(read_file(FILE_NAME_2))) ERR;
97
98   SUMMARIZE_ERR;
99   FINAL_RESULTS;
100}


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed