Applied. I have made the system used configurable, so one will need to
use the --kib option to speed to replace the default (SI system).

On 12/17/2010 07:04 PM, Phil Sutter wrote:
> Since measurement is done in bytes, use a capital B as unit. Also,
> stepping by 1024 from one magnitude to the next is more common. This is
> indicated by the 'i' in between the magnitude and unit symbols.
> ---
>  examples/async_speed.c |   32 +++++++++++---------------------
>  examples/speed.c       |   32 +++++++++++---------------------
>  2 files changed, 22 insertions(+), 42 deletions(-)
> 
> diff --git a/examples/async_speed.c b/examples/async_speed.c
> index 679219b..940d923 100644
> --- a/examples/async_speed.c
> +++ b/examples/async_speed.c
> @@ -43,29 +43,19 @@ static void alarm_handler(int signo)
>       pfd.events = POLLIN;
>  }
>  
> +static char *units[] = { "", "Ki", "Mi", "Gi", "Ti", 0};
> +
>  static void value2human(double bytes, double time, double* data, double* 
> speed,char* metric)
>  {
> -        if (bytes > 1000 && bytes < 1000*1000) {
> -                *data = ((double)bytes)/1000;
> -                *speed = *data/time;
> -                strcpy(metric, "Kb");
> -                return;
> -        } else if (bytes >= 1000*1000 && bytes < 1000*1000*1000) {
> -                *data = ((double)bytes)/(1000*1000);
> -                *speed = *data/time;
> -                strcpy(metric, "Mb");
> -                return;
> -        } else if (bytes >= 1000*1000*1000) {
> -                *data = ((double)bytes)/(1000*1000*1000);
> -                *speed = *data/time;
> -                strcpy(metric, "Gb");
> -                return;
> -        } else {
> -                *data = (double)bytes;
> -                *speed = *data/time;
> -                strcpy(metric, "bytes");
> -                return;
> -        }
> +     int unit = 0;
> +
> +     *data = bytes;
> +     while (*data > 1024 && units[unit + 1]) {
> +             *data /= 1024;
> +             unit++;
> +     }
> +     *speed = *data / time;
> +     sprintf(metric, "%sB", units[unit]);
>  }
>  
>  
> diff --git a/examples/speed.c b/examples/speed.c
> index 998772d..63218a9 100644
> --- a/examples/speed.c
> +++ b/examples/speed.c
> @@ -39,29 +39,19 @@ static void alarm_handler(int signo)
>          must_finish = 1;
>  }
>  
> +static char *units[] = { "", "Ki", "Mi", "Gi", "Ti", 0};
> +
>  static void value2human(double bytes, double time, double* data, double* 
> speed,char* metric)
>  {
> -        if (bytes > 1000 && bytes < 1000*1000) {
> -                *data = ((double)bytes)/1000;
> -                *speed = *data/time;
> -                strcpy(metric, "Kb");
> -                return;
> -        } else if (bytes >= 1000*1000 && bytes < 1000*1000*1000) {
> -                *data = ((double)bytes)/(1000*1000);
> -                *speed = *data/time;
> -                strcpy(metric, "Mb");
> -                return;
> -        } else if (bytes >= 1000*1000*1000) {
> -                *data = ((double)bytes)/(1000*1000*1000);
> -                *speed = *data/time;
> -                strcpy(metric, "Gb");
> -                return;
> -        } else {
> -                *data = (double)bytes;
> -                *speed = *data/time;
> -                strcpy(metric, "bytes");
> -                return;
> -        }
> +     int unit = 0;
> +
> +     *data = bytes;
> +     while (*data > 1024 && units[unit + 1]) {
> +             *data /= 1024;
> +             unit++;
> +     }
> +     *speed = *data / time;
> +     sprintf(metric, "%sB", units[unit]);
>  }
>  
>  


_______________________________________________
Cryptodev-linux-devel mailing list
Cryptodev-linux-devel@gna.org
https://mail.gna.org/listinfo/cryptodev-linux-devel

Reply via email to