On Thu, Jun 26, 2014 at 4:30 AM, Ivan Delalande <col...@ycc.fr> wrote:
> Commit 5edeec1 introduced a wrong factor for nanosecond computation, the 
> correct
> value is 1E6. Time and timeout values are 10 times less than they should be 
> and
> this cause high CPU usage.
>
> Reported by pyroh on IRC. Thanks!

Nice!

I can confirm that this patch makes a big difference on the VM I use
at work. Even typing in st is slow without this patch applied.


Cheers,

Silvan

> ---
>  st.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/st.c b/st.c
> index 17142a4..f9c9f7a 100644
> --- a/st.c
> +++ b/st.c
> @@ -76,7 +76,7 @@ char *argv0;
>  #define LIMIT(x, a, b)    (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x)
>  #define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || (a).bg != 
> (b).bg)
>  #define IS_SET(flag) ((term.mode & (flag)) != 0)
> -#define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + 
> (t1.tv_nsec-t2.tv_nsec)/10E6)
> +#define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + 
> (t1.tv_nsec-t2.tv_nsec)/1E6)
>  #define CEIL(x) (((x) != (int) (x)) ? (x) + 1 : (x))
>  #define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit)))
>
> @@ -3753,7 +3753,7 @@ run(void) {
>
>                 clock_gettime(CLOCK_MONOTONIC, &now);
>                 drawtimeout.tv_sec = 0;
> -               drawtimeout.tv_nsec = (1000/xfps) * 10E6;
> +               drawtimeout.tv_nsec = (1000/xfps) * 1E6;
>                 tv = &drawtimeout;
>
>                 dodraw = 0;
> @@ -3790,7 +3790,7 @@ run(void) {
>                                                         > blinktimeout) {
>                                                 drawtimeout.tv_nsec = 1000;
>                                         } else {
> -                                               drawtimeout.tv_nsec = (10E6 * 
> \
> +                                               drawtimeout.tv_nsec = (1E6 * \
>                                                         (blinktimeout - \
>                                                         TIMEDIFF(now,
>                                                                 lastblink)));
> --
> 2.0.0
>
>
> --
> Ivan "Colona" Delalande
>

Reply via email to