mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
kbx: Use custom estream buffering
* kbx/keybox-init.c (ll_buffer_size): New var intialized to 128k (stream_buffers): New var. (keybox_set_buffersize): New. (_keybox_ll_open, _keybox_ll_close): Implement buffering. * sm/gpgsm.c (oKbxBufferSize): New. (opts): Add option --kbx-buffer-size. (main): Call keybox_set_buffersize. * g10/gpg.c: Include keybox.h. * (oKbxBufferSize): New. (opts): Add option --kbx-buffer-size. (main): Call keybox_set_buffersize. -- Commit message from 2.4: Running a test on Windows using a pubring.kbx with Total number of blobs: 2098 openpgp: 1294 x509: 803 and a size of 42MiB with gpgsm -k --with-validation --disable-dirmngr --kbx-buffer-size N >nul gives these performance figures using procmon | N(k) | file events | time(s) | |------+-------------+---------| | 0 | 4900000 | 86 | | 16 | 2456000 | 58 | | 32 | 1233000 | 43 | | 64 | 622000 | 37 | | 128 | 317000 | 32 | | 256 | 164000 | 31 | | 512 | 88000 | 30 | Using _open instead of CreateFile give the same number of file events but increased the time slight by one second for the measured buffer size of 64k and 128k. Benchmarks for gpg have not been conducted.
This commit is contained in:
parent
0a4ccab3bd
commit
69b0fa55f6
4 changed files with 93 additions and 3 deletions
|
@ -65,6 +65,8 @@
|
|||
#include "../common/zb32.h"
|
||||
#include "../common/shareddefs.h"
|
||||
#include "../common/compliance.h"
|
||||
#include "../kbx/keybox.h"
|
||||
|
||||
|
||||
#if defined(HAVE_DOSISH_SYSTEM) || defined(__CYGWIN__)
|
||||
#define MY_O_BINARY O_BINARY
|
||||
|
@ -434,6 +436,7 @@ enum cmd_and_opt_values
|
|||
oForbidGenKey,
|
||||
oRequireCompliance,
|
||||
oCompatibilityFlags,
|
||||
oKbxBufferSize,
|
||||
|
||||
oNoop
|
||||
};
|
||||
|
@ -905,6 +908,7 @@ static ARGPARSE_OPTS opts[] = {
|
|||
/* Esoteric compatibility options. */
|
||||
ARGPARSE_s_n (oRFC2440Text, "rfc2440-text", "@"),
|
||||
ARGPARSE_s_n (oNoRFC2440Text, "no-rfc2440-text", "@"),
|
||||
ARGPARSE_p_u (oKbxBufferSize, "kbx-buffer-size", "@"),
|
||||
|
||||
ARGPARSE_header (NULL, ""), /* Stop the header group. */
|
||||
|
||||
|
@ -3638,6 +3642,10 @@ main (int argc, char **argv)
|
|||
opt.flags.require_compliance = 1;
|
||||
break;
|
||||
|
||||
case oKbxBufferSize:
|
||||
keybox_set_buffersize (pargs.r.ret_ulong, 0);
|
||||
break;
|
||||
|
||||
case oNoop: break;
|
||||
|
||||
default:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue