diff options
author | Brian Pane <brianp@apache.org> | 2002-05-07 04:12:44 +0000 |
---|---|---|
committer | Brian Pane <brianp@apache.org> | 2002-05-07 04:12:44 +0000 |
commit | 0667fe83cc43166bc26e31c65be9cee4bcd99aed (patch) | |
tree | 8e88c3cfd409de8fafbb0530bd57b6797fbb72d3 /strings/apr_snprintf.c | |
parent | c953a8cf193d0ab9d7f71e9705b7a8956afbc995 (diff) | |
download | apr-0667fe83cc43166bc26e31c65be9cee4bcd99aed.tar.gz |
Optimize away a strncmp that accounted for 10% of the run time of
apr_vformatter()
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@63368 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'strings/apr_snprintf.c')
-rw-r--r-- | strings/apr_snprintf.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/strings/apr_snprintf.c b/strings/apr_snprintf.c index d9ceb3454..8883a68db 100644 --- a/strings/apr_snprintf.c +++ b/strings/apr_snprintf.c @@ -810,8 +810,15 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), /* * Modifier check */ +#if defined(APR_INT64_T_FMT_LEN) && (APR_INT64_T_FMT_LEN == 3) + if ((*fmt == APR_INT64_T_FMT[0]) && + (fmt[1] == APR_INT64_T_FMT[1])) { +#elif defined(APR_INT64_T_FMT_LEN) && (APR_INT64_T_FMT_LEN == 2) + if (*fmt == APR_INT64_T_FMT[0]) { +#else if (strncmp(fmt, APR_INT64_T_FMT, sizeof(APR_INT64_T_FMT) - 2) == 0) { +#endif /* Need to account for trailing 'd' and null in sizeof() */ var_type = IS_QUAD; fmt += (sizeof(APR_INT64_T_FMT) - 2); |