[netcdfgroup] strlen calls in NC_finddim and NC_findvar
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