mirror of
https://github.com/tesseract-ocr/tesseract.git
synced 2025-01-18 06:30:14 +08:00
genericvector: Fix minimum size
Commit907de5995f
tried to improve GenericVector, but missed a case where vectors with less than kDefaultVectorSize were allocated. This resulted in additional alloc / free operations. Commita28b2a033d
(before memory optimization) oem 0: total heap usage: 739,238 allocs, 739,237 frees, 161,699,214 bytes allocated oem 1: total heap usage: 690,182 allocs, 690,175 frees, 144,470,400 bytes allocated oem 2: total heap usage: 728,213 allocs, 728,206 frees, 182,885,824 bytes allocated Commitfd3f8f9b2d
without genericvector change oem 0: total heap usage: 738,980 allocs, 738,979 frees, 161,697,150 bytes allocated oem 1: total heap usage: 690,182 allocs, 690,175 frees, 144,470,400 bytes allocated oem 2: total heap usage: 728,213 allocs, 728,206 frees, 182,885,824 bytes allocated => Improvements for oem 0, no change for oem 1 and oem 2. Commitfd3f8f9b2d
oem 0: total heap usage: 772,648 allocs, 772,647 frees, 160,083,901 bytes allocated oem 1: total heap usage: 748,591 allocs, 748,584 frees, 143,581,672 bytes allocated oem 2: total heap usage: 764,796 allocs, 764,789 frees, 181,212,197 bytes allocated => Less bytes allocated, but more allocs / frees = bad for performance. Commitfd3f8f9b2d
with this patch oem 0: total heap usage: 677,537 allocs, 677,536 frees, 160,444,634 bytes allocated oem 1: total heap usage: 653,812 allocs, 653,805 frees, 143,423,008 bytes allocated oem 2: total heap usage: 670,029 allocs, 670,022 frees, 181,517,760 bytes allocated => Improvements for all three cases. Signed-off-by: Stefan Weil <sw@weilnetz.de>
This commit is contained in:
parent
b4d77057d6
commit
46c887b77e
@ -658,6 +658,7 @@ template <typename T>
|
||||
void GenericVector<T>::reserve(int size) {
|
||||
if (size_reserved_ >= size || size <= 0)
|
||||
return;
|
||||
if (size < kDefaultVectorSize) size = kDefaultVectorSize;
|
||||
T* new_array = new T[size];
|
||||
for (int i = 0; i < size_used_; ++i)
|
||||
new_array[i] = data_[i];
|
||||
|
Loading…
Reference in New Issue
Block a user