Revision: 21570
Author: gervandiepen
Date: Thu Feb 19 14:11:12 2015 UTC
Log: Fixed getcol problem found by Harro Verkouter. It got very slow
after a getcolslice was done due to heavy cache lookup
https://code.google.com/p/casacore/source/detail?r=21570
Modified:
/branches/nov14/tables/DataMan/TSMDataColumn.cc
=======================================
--- /branches/nov14/tables/DataMan/TSMDataColumn.cc Wed Dec 10 08:06:42
2014 UTC
+++ /branches/nov14/tables/DataMan/TSMDataColumn.cc Thu Feb 19 14:11:12
2015 UTC
@@ -182,7 +182,7 @@
if (hypercube->getLastColAccess() != TSMCube::CellAccess) {
if (! stmanPtr_p->userSetCache (rownr)) {
hypercube->setCacheSize (1 + end - start, IPosition(),
- IPosition(), IPosition(), False, False);
+ IPosition(), IPosition(), True, False);
hypercube->setLastColAccess (TSMCube::CellAccess);
}
}
@@ -224,7 +224,7 @@
}
axisPath.resize (naxis);
hypercube->setCacheSize (1 + end - start, IPosition(),
- IPosition(), axisPath, False, False);
+ IPosition(), axisPath, True, False);
hypercube->setLastColAccess (TSMCube::SliceAccess);
hypercube->setLastColSlice (slice);
}
@@ -244,7 +244,7 @@
// Size the cache if the user has not done it.
if (! stmanPtr_p->userSetCache (0)) {
hypercube->setCacheSize (end + 1, IPosition(),
- IPosition(), IPosition(), False, False);
+ IPosition(), IPosition(), True, False);
hypercube->setLastColAccess (TSMCube::ColumnAccess);
}
hypercube->accessSection (start, end, (char*)dataPtr, colnr_p,
@@ -293,7 +293,7 @@
}
axisPath.resize (naxis);
hypercube->setCacheSize (1 + end - start, IPosition(),
- IPosition(), axisPath, False, False);
+ IPosition(), axisPath, True, False);
hypercube->setLastColAccess (TSMCube::ColumnSliceAccess);
hypercube->setLastColSlice (slice);
}
@@ -470,7 +470,7 @@
if (! stmanPtr_p->userSetCache (0)) {
if (hypercube->getLastColAccess() != TSMCube::ColumnAccess) {
hypercube->setCacheSize (hypercube->cubeShape(), IPosition(),
- IPosition(), IPosition(), False, False);
+ IPosition(), IPosition(), True, False);
hypercube->setLastColAccess (TSMCube::ColumnAccess);
}
}
@@ -507,7 +507,7 @@
}
axisPath.resize (naxis);
hypercube->setCacheSize (sliceShp, IPosition(),
- IPosition(), axisPath, False, False);
+ IPosition(), axisPath, True, False);
hypercube->setLastColAccess (TSMCube::ColumnSliceAccess);
hypercube->setLastColSlice (sliceShp);
}