preprocess icon indicating copy to clipboard operation
preprocess copied to clipboard

Add `Reserve()` to `AutoProbing`

Open jelmervdl opened this issue 1 year ago • 1 comments

Adds a Reserve() method to AutoProbing that is necessary to get Bitextor's document aligner to work with this type of table.

I tried multiple setups where I just initialised the main table with a different size, but making sure the destination table is large enough with a Reserve call seems to be the only way to have any predictably good performance.

I also added a move-assignment operator to scoped_memory, the lack thereof prevented me to do df = std::move(local_df).

Things that can be improved:

  • I didn't check if AutoProbing's auto-generated move assignment operator is up to the job, but the output seems to be as expected. The AutoProbing table that was moved out from might be in a funny state though, with its counters not reset and no backing memory left.
  • Reserve() is just a while-loop around Double(), which is the laziest implementation possible but does a couple of pointless realloc calls.

jelmervdl avatar Jul 03 '23 15:07 jelmervdl

Hmm, looking at this in https://github.com/jelmervdl/bitextor/pull/3 and using this table doesn't really yield an improvement over std::unordered_map in terms of memory usage.

jelmervdl avatar Jul 03 '23 15:07 jelmervdl