- To: "netcdfgroup@xxxxxxxxxxxxxxxx" <netcdfgroup@xxxxxxxxxxxxxxxx>
- Subject: [netcdfgroup] strlen calls in NC_finddim and NC_findvar
- From: "Greg Sjaardema" <gdsjaar@xxxxxxxxxx>
- Date: Thu, 3 Dec 2009 15:41:49 -0700
I have a monstrous file with several thousand dimensions and variables
which is running slower than it should. I investigated the runtime and
found that strlen was the major time user in the NC_finddim and
NC_findvar calls. The obvious optimization was to cache the length of
the name instead of calling strlen each time. However, when I went to
do this, I discovered that the length is already cached as the nchars
field in the NC_string struct.
I did some checks in the code and also added some assertions to the code and verified that, as far as I can tell, nchars is the correct length of the string. Is there a reason that it isn't used and strlen() is called instead? Switching the code to use nchars dropped my execution time from 20 units to 6 units. I would like to make the switch, but wondered if there was some strange corner case where the nchars value is incorrect and will cause problems.
Thanks, --Greg
- Follow-Ups:
- Re: [netcdfgroup] strlen calls in NC_finddim and NC_findvar
- From: Ed Hartnett
- Re: [netcdfgroup] strlen calls in NC_finddim and NC_findvar