comparison src/libpst.h @ 360:26c48ea9d896

From Jeffrey Morlan: pst_build_id_ptr reads the Block BTree into a linked list, which pst_getID does a linear scan through. For large PSTs that have millions of blocks, this is extremely slow - almost all time is spent in pst_getID. Since the BTree entries must be in order, this can be dramatically improved by reading into an array and using binary search.
author Carl Byington <carl@five-ten-sg.com>
date Wed, 06 Jul 2016 10:21:08 -0700
parents 09dd5299d91c
children 3a1d25c579c6
comparison
equal deleted inserted replaced
359:a3e674fade6c 360:26c48ea9d896
103 typedef struct pst_index_ll { 103 typedef struct pst_index_ll {
104 uint64_t i_id; 104 uint64_t i_id;
105 uint64_t offset; 105 uint64_t offset;
106 uint64_t size; 106 uint64_t size;
107 int64_t u1; 107 int64_t u1;
108 struct pst_index_ll *next;
109 } pst_index_ll; 108 } pst_index_ll;
110 109
111 110
112 typedef struct pst_id2_tree { 111 typedef struct pst_id2_tree {
113 uint64_t id2; 112 uint64_t id2;
892 char* cwd; 891 char* cwd;
893 /** original file name when the file was opened */ 892 /** original file name when the file was opened */
894 char* fname; 893 char* fname;
895 /** default character set for items without one */ 894 /** default character set for items without one */
896 const char* charset; 895 const char* charset;
897 /** the head and tail of the linked list of index structures */ 896 /** the array of index structures */
898 pst_index_ll *i_head, *i_tail; 897 pst_index_ll *i_table;
898 size_t i_count, i_capacity;
899 /** the head and tail of the top level of the descriptor tree */ 899 /** the head and tail of the top level of the descriptor tree */
900 pst_desc_tree *d_head, *d_tail; 900 pst_desc_tree *d_head, *d_tail;
901 /** the head of the extended attributes linked list */ 901 /** the head of the extended attributes linked list */
902 pst_x_attrib_ll *x_head; 902 pst_x_attrib_ll *x_head;
903 /** the head of the block recorder, a debug artifact 903 /** the head of the block recorder, a debug artifact