aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/CellBuffer.cxx
diff options
context:
space:
mode:
authornyamatongwe <unknown>2002-08-03 02:52:17 +0000
committernyamatongwe <unknown>2002-08-03 02:52:17 +0000
commit76333f2c89b3dfbbbfdc47fed6590d3f64d1d835 (patch)
treec53587cb73821b59d817fa3dda4f5cebfb2430f0 /src/CellBuffer.cxx
parentbd9e60e9776f3c57fe42312ea7f64011dd350e8f (diff)
downloadscintilla-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.cxx3
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);