emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Calling 'select' from emacs_gnutls_pull


From: Eli Zaretskii
Subject: Re: Calling 'select' from emacs_gnutls_pull
Date: Fri, 22 Feb 2013 14:36:46 +0200

> From: address@hidden (Claudio Bley)
> Date: Fri, 22 Feb 2013 12:15:36 +0100
> 
> However, applying the obvious patch:
> 
> --- >8 ---
> --- src/w32.c Thu Feb 21 14:35:43 2013
> +++ ../build/src/w32.c        Fri Feb 22 08:32:35 2013
> @@ -7837,27 +7837,9 @@
>  
>        err = errno;
>  
> +      /* Translate the WSAEWOULDBLOCK alias EWOULDBLOCK to EAGAIN. */
>        if (err == EWOULDBLOCK)
> -        {
> -          /* Set a small timeout.  */
> -       timeout = make_emacs_time (1, 0);
> -          FD_ZERO (&fdset);
> -          FD_SET ((int)fd, &fdset);
> -
> -          /* Use select with the timeout to poll the selector.  */
> -          sc = select (fd + 1, &fdset, (SELECT_TYPE *)0, (SELECT_TYPE *)0,
> -                       &timeout, NULL);
> -
> -          if (sc > 0)
> -            continue;  /* Try again.  */
> -
> -          /* Translate the WSAEWOULDBLOCK alias EWOULDBLOCK to EAGAIN.
> -             Also accept select return 0 as an indicator to EAGAIN.  */
> -          if (sc == 0 || errno == EWOULDBLOCK)
> -            err = EAGAIN;
> -          else
> -            err = errno; /* Other errors are just passed on.  */
> -        }
> +        err = EAGAIN;
>  
>        emacs_gnutls_transport_set_errno (process->gnutls_state, err);
>  
> 
> --- >8 ---
> 
> and made a few tests using POP3 and IMAP connections over TLS and
> HTTPS connections. Works good.

That's good news.

> Average for with-select key over 3 runs
> 
> Version Number:   Windows NT 5.1 (Build 2600)
> Exit Time:        1:00 am, Monday, January 1 1601
> Elapsed Time:     0:00:35.208
> Process Time:     0:00:05.822
> System Calls:     659366     
> Context Switches: 138074     
> Page Faults:      61507      
> Bytes Read:       80719977   
> Bytes Written:    320584     
> Bytes Other:      908395     
> 
> 
> Average for without-select key over 3 runs
> 
> Version Number:   Windows NT 5.1 (Build 2600)
> Exit Time:        1:00 am, Monday, January 1 1601
> Elapsed Time:     0:00:33.796
> Process Time:     0:00:06.166
> System Calls:     857893     
> Context Switches: 140154     
> Page Faults:      69061      
> Bytes Read:       99353998   
> Bytes Written:    2017152    
> Bytes Other:      1175082    

The times look comparable, but I'm confused why byte counts are so
much different.  Is there a good explanation to that?

Anyway, AFAIU, your tests indicate that it would be okay to install
the above changes on the development trunk, right?

Thanks for your valuable feedback.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]