diff options
author | nyamatongwe <unknown> | 2002-08-03 02:52:17 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2002-08-03 02:52:17 +0000 |
commit | 76333f2c89b3dfbbbfdc47fed6590d3f64d1d835 (patch) | |
tree | c53587cb73821b59d817fa3dda4f5cebfb2430f0 /src/CellBuffer.cxx | |
parent | bd9e60e9776f3c57fe42312ea7f64011dd350e8f (diff) | |
download | scintilla-mirror-76333f2c89b3dfbbbfdc47fed6590d3f64d1d835.tar.gz |
Changed LineVector to use an exponential allocation strategy which
minimises the memory allocated for short files but avoids excessive
copying for huge files. 23 Meg file load changes from 17 seconds to 3.
Diffstat (limited to 'src/CellBuffer.cxx')
-rw-r--r-- | src/CellBuffer.cxx | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/CellBuffer.cxx b/src/CellBuffer.cxx index b67da81c9..420dee6ff 100644 --- a/src/CellBuffer.cxx +++ b/src/CellBuffer.cxx @@ -125,6 +125,7 @@ LineVector::LineVector() { levels = 0; sizeLevels = 0; handleCurrent = 1; + growSize = 1000; Init(); } @@ -199,6 +200,8 @@ void LineVector::ClearLevels() { void LineVector::InsertValue(int pos, int value) { //Platform::DebugPrintf("InsertValue[%d] = %d\n", pos, value); if ((lines + 2) >= size) { + if (growSize * 6 < size) + growSize *= 2; Expand(size + growSize); if (levels) { ExpandLevels(size + growSize); |