[Help-gnutls] Performance of gnutls_record_recv(session, &c, 1)?
Nikos Mavrogiannopoulos
nmav at gnutls.org
Wed Mar 5 19:31:31 CET 2008
Martin Lambers wrote:
> Hi all,
>
> Dimitrios Apostolou reported a large performance difference between the
> OpenSSL and GnuTLS versions of mpop, a POP3 client, when querying the
> status of a large POP3 mail box (>70000 messages).
>
> In this situation, mpop needs to read a large amount of data (size
> listings and UIDs, but not the mails itself). This takes 1m15s with
> GnuTLS and only about 15s with OpenSSL. The 1m15s are completely spent
> at 100% CPU.
>
> Mpop uses gnutls_record_recv(session, &c, 1) for reading the data, i.e.
> it reads the characters one at a time. It does not do any buffering
> because the TLS library needs to do buffering internally anyway.
> The OpenSSL variant of mpop does the equivalent: SSL_read(ssl, &c, 1).
>
> Can this performance difference be caused by different TLS session
> parameters? If so, which parameters would that be?
> Should mpop perform additional buffering and read larger chunks of data
> with gnutls_record_recv()?
Indeed gnutls_record_recv wasn't written for 1 byte reads. Currently it
has quite an overhead for reading few bytes.
regards,
Nikos
More information about the Gnutls-help
mailing list