From ce2140a8c12299f17bee406bad374e310daa94ed Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Thu, 17 May 2018 13:37:36 +0200 Subject: getinfo: add microsecond precise timers for various intervals Provide a set of new timers that return the time intervals using integer number of microseconds instead of floats. The new info names are as following: CURLINFO_APPCONNECT_TIME_T CURLINFO_CONNECT_TIME_T CURLINFO_NAMELOOKUP_TIME_T CURLINFO_PRETRANSFER_TIME_T CURLINFO_REDIRECT_TIME_T CURLINFO_STARTTRANSFER_TIME_T CURLINFO_TOTAL_TIME_T Closes #2495 --- docs/examples/chkspeed.c | 26 +++++++++++++++----------- docs/examples/fileupload.c | 12 +++++++----- docs/examples/progressfunc.c | 11 ++++++----- 3 files changed, 28 insertions(+), 21 deletions(-) (limited to 'docs/examples') diff --git a/docs/examples/chkspeed.c b/docs/examples/chkspeed.c index f3dd1e944..0b0ba72a0 100644 --- a/docs/examples/chkspeed.c +++ b/docs/examples/chkspeed.c @@ -165,33 +165,37 @@ int main(int argc, char *argv[]) res = curl_easy_perform(curl_handle); if(CURLE_OK == res) { - double val; + curl_off_t val; /* check for bytes downloaded */ - res = curl_easy_getinfo(curl_handle, CURLINFO_SIZE_DOWNLOAD, &val); + res = curl_easy_getinfo(curl_handle, CURLINFO_SIZE_DOWNLOAD_T, &val); if((CURLE_OK == res) && (val>0)) - printf("Data downloaded: %0.0f bytes.\n", val); + printf("Data downloaded: %" CURL_FORMAT_CURL_OFF_T " bytes.\n", val); /* check for total download time */ - res = curl_easy_getinfo(curl_handle, CURLINFO_TOTAL_TIME, &val); + res = curl_easy_getinfo(curl_handle, CURLINFO_TOTAL_TIME_T, &val); if((CURLE_OK == res) && (val>0)) - printf("Total download time: %0.3f sec.\n", val); + printf("Total download time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n", + (val / 1000000), (long)(val % 1000000)); /* check for average download speed */ - res = curl_easy_getinfo(curl_handle, CURLINFO_SPEED_DOWNLOAD, &val); + res = curl_easy_getinfo(curl_handle, CURLINFO_SPEED_DOWNLOAD_T, &val); if((CURLE_OK == res) && (val>0)) - printf("Average download speed: %0.3f kbyte/sec.\n", val / 1024); + printf("Average download speed: %" CURL_FORMAT_CURL_OFF_T + " kbyte/sec.\n", val / 1024); if(prtall) { /* check for name resolution time */ - res = curl_easy_getinfo(curl_handle, CURLINFO_NAMELOOKUP_TIME, &val); + res = curl_easy_getinfo(curl_handle, CURLINFO_NAMELOOKUP_TIME_T, &val); if((CURLE_OK == res) && (val>0)) - printf("Name lookup time: %0.3f sec.\n", val); + printf("Name lookup time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n", + (val / 1000000), (long)(val % 1000000)); /* check for connect time */ - res = curl_easy_getinfo(curl_handle, CURLINFO_CONNECT_TIME, &val); + res = curl_easy_getinfo(curl_handle, CURLINFO_CONNECT_TIME_T, &val); if((CURLE_OK == res) && (val>0)) - printf("Connect time: %0.3f sec.\n", val); + printf("Connect time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n", + (val / 1000000), (long)(val % 1000000)); } } else { diff --git a/docs/examples/fileupload.c b/docs/examples/fileupload.c index 6b05c4cec..8128608c4 100644 --- a/docs/examples/fileupload.c +++ b/docs/examples/fileupload.c @@ -33,7 +33,7 @@ int main(void) CURL *curl; CURLcode res; struct stat file_info; - double speed_upload, total_time; + curl_off_t speed_upload, total_time; FILE *fd; fd = fopen("debugit", "rb"); /* open file to upload */ @@ -72,11 +72,13 @@ int main(void) } else { /* now extract transfer info */ - curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed_upload); - curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total_time); + curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed_upload); + curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total_time); - fprintf(stderr, "Speed: %.3f bytes/sec during %.3f seconds\n", - speed_upload, total_time); + fprintf(stderr, "Speed: %" CURL_FORMAT_CURL_OFF_T " bytes/sec during %" + CURL_FORMAT_CURL_OFF_T ".%06ld seconds\n", + speed_upload, + (total_time / 1000000), (long)(total_time % 1000000)); } /* always cleanup */ diff --git a/docs/examples/progressfunc.c b/docs/examples/progressfunc.c index ab34ef988..52a3c0834 100644 --- a/docs/examples/progressfunc.c +++ b/docs/examples/progressfunc.c @@ -28,10 +28,10 @@ #include #define STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES 6000 -#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL 3 +#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL 3000000 struct myprogress { - double lastruntime; + curl_off_t lastruntime; CURL *curl; }; @@ -42,16 +42,17 @@ static int xferinfo(void *p, { struct myprogress *myp = (struct myprogress *)p; CURL *curl = myp->curl; - double curtime = 0; + curl_off_t curtime = 0; - curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &curtime); + curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &curtime); /* under certain circumstances it may be desirable for certain functionality to only run every N seconds, in order to do this the transaction time can be used */ if((curtime - myp->lastruntime) >= MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL) { myp->lastruntime = curtime; - fprintf(stderr, "TOTAL TIME: %f \r\n", curtime); + fprintf(stderr, "TOTAL TIME: %" CURL_FORMAT_CURL_OFF_T ".%06ld\r\n", + (curtime / 1000000), (long)(curtime % 1000000)); } fprintf(stderr, "UP: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T -- cgit v1.2.3