[Libreoffice-bugs] [Bug 121052] New: Calc: Slow load of cells with VLOOKUP with references to empty cells
bugzilla-daemon at bugs.documentfoundation.org
bugzilla-daemon at bugs.documentfoundation.org
Tue Oct 30 08:46:40 UTC 2018
https://bugs.documentfoundation.org/show_bug.cgi?id=121052
Bug ID: 121052
Summary: Calc: Slow load of cells with VLOOKUP with references
to empty cells
Product: LibreOffice
Version: unspecified
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: medium
Component: Calc
Assignee: libreoffice-bugs at lists.freedesktop.org
Reporter: serge.krot at cib.de
Calc uses ScDocRowHeightUpdater::update() method during load. Inside this
method the document is being recalculated to get height of the cells with real
cell values. The document has 2 tables (each table has 2 columns):
Table-1:
A,B
101,VLOOKUP(A1,X1:Z255,2,0)
102,VLOOKUP(A2,X1:Z255,2,0)
103,VLOOKUP(A3,X1:Z255,2,0)
...
199,VLOOKUP(A199,X1:Z255,2,0)
Table-2:
X,Z
1,Product1
2,Product2
3,Product3
...
255,Product255
After load the first table has following visible values:
A,B
101,Product1
102,Product2
103,Product3
...
199,Product199
Now, if we take the same document but the whole A column is empty, the document
will be loaded very slow comparing to the document that contains data.
The problem:
* Calculation of the VLOOKUP is too slow when no data is provided
Useful link:
*
https://help.libreoffice.org/6.2/en-US/text/scalc/01/04060109.html?DbPAR=CALC#bm_id3153152
- VLOOKUP documentation
Typical call stack:
[External Code]
> [Inline Frame] sal3.dll!rtl_uString_ImplAlloc(long) Line 1146 C++
sal3.dll!rtl_uString_new_WithLength(_rtl_uString * * ppThis, long nLen)
Line 1263 C++
[Inline Frame] svllo.dll!rtl::OUStringBuffer::{ctor}() Line 71 C++
svllo.dll!SvNumberformat::GetOutputString(double fNumber, rtl::OUString
& OutString, Color * * ppColor) Line 2392 C++
svllo.dll!SvNumberFormatter::GetInputLineString(const double &
fOutNumber, unsigned long nFIndex, rtl::OUString & sOutString) Line 1557 C++
sclo.dll!ScCellFormat::GetInputString(ScRefCellValue & rCell, unsigned
long nFormat, rtl::OUString & rString, SvNumberFormatter & rFormatter, const
ScDocument * pDoc) Line 151 C++
sclo.dll!`anonymous
namespace'::QueryEvaluator::compareByString(ScRefCellValue & rCell, long nRow,
const ScQueryEntry & rEntry, const ScQueryEntry::Item & rItem, const
ScInterpreterContext * pContext) Line 2497 C++
sclo.dll!ScTable::ValidQuery(long nRow, const ScQueryParam & rParam,
const ScRefCellValue * pCell, bool * pbTestEqualCondition, const
ScInterpreterContext * pContext) Line 2804 C++
sclo.dll!ScQueryCellIterator::GetThis() Line 1176 C++
sclo.dll!lcl_LookupQuery(ScAddress & o_rResultPos, ScDocument * pDoc,
const ScInterpreterContext & rContext, const ScQueryParam & rParam, const
ScQueryEntry & rEntry) Line 9640 C++
sclo.dll!ScInterpreter::LookupQueryWithCache(ScAddress & o_rResultPos,
const ScQueryParam & rParam) Line 9677 C++
sclo.dll!ScInterpreter::CalculateLookup(bool bHLookup) Line 7356
C++
sclo.dll!ScInterpreter::ScVLookup() Line 7432 C++
sclo.dll!ScInterpreter::Interpret() Line 4203 C++
sclo.dll!ScFormulaCell::InterpretTail(ScInterpreterContext & rContext,
ScFormulaCell::ScInterpretTailParameter eTailParam) Line 1868 C++
sclo.dll!ScFormulaCell::Interpret() Line 1579 C++
[Inline Frame] sclo.dll!ScFormulaCell::MaybeInterpret() Line 2674
C++
sclo.dll!ScFormulaCell::GetErrCode() Line 2918 C++
sclo.dll!ScCellFormat::GetString(ScRefCellValue & rCell, unsigned long
nFormat, rtl::OUString & rString, Color * * ppColor, SvNumberFormatter &
rFormatter, const ScDocument * pDoc, bool bNullVals, bool bFormula, bool
bUseStarFormat) Line 79 C++
sclo.dll!ScCellFormat::GetString(ScDocument & rDoc, const ScAddress &
rPos, unsigned long nFormat, Color * * ppColor, SvNumberFormatter & rFormatter,
bool bNullVals, bool bFormula) Line 117 C++
sclo.dll!ScDocument::GetCellScriptType(const ScAddress & rPos, unsigned
long nNumberFormat) Line 120 C++
sclo.dll!ScDocument::GetScriptType(short nCol, long nRow, short nTab)
Line 149 C++
sclo.dll!ScColumn::GetNeededSize(long nRow, OutputDevice * pDev, double
nPPTX, double nPPTY, const Fraction & rZoomX, const Fraction & rZoomY, bool
bWidth, const ScNeededSizeOptions & rOptions, const ScPatternAttr * *
ppPatternChange) Line 249 C++
sclo.dll!ScColumn::GetOptimalHeight(sc::RowHeightContext & rCxt, long
nStartRow, long nEndRow, unsigned short nMinHeight, long nMinStart) Line 949
C++
sclo.dll!`anonymous
namespace'::GetOptimalHeightsInColumn(sc::RowHeightContext & rCxt,
ScColContainer & rCol, long nStartRow, long nEndRow, ScProgress * pProgress,
unsigned long nProgressStart) Line 123 C++
sclo.dll!ScTable::SetOptimalHeight(sc::RowHeightContext & rCxt, long
nStartRow, long nEndRow, ScProgress * pOuterProgress, unsigned long
nProgressStart) Line 480 C++
sclo.dll!ScDocRowHeightUpdater::update() Line 2589 C++
sclo.dll!ScXMLImport::endDocument() Line 1809 C++
expwraplo.dll!sax_fastparser::FastSaxParserImpl::parseStream(const
com::sun::star::xml::sax::InputSource & rStructSource) Line 876 C++
expwraplo.dll!sax_fastparser::FastSaxParser::parseStream(const
com::sun::star::xml::sax::InputSource & aInputSource) Line 1378 C++
xolo.dll!SvXMLImport::parseStream(const
com::sun::star::xml::sax::InputSource & aInputSource) Line 485 C++
sclo.dll!ScXMLImportWrapper::ImportFromComponent(const
com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> &
xContext, const com::sun::star::uno::Reference<com::sun::star::frame::XModel> &
xModel, const com::sun::star::uno::Reference<com::sun::star::xml::sax::XParser>
& xParser, com::sun::star::xml::sax::InputSource & aParserInput, const
rtl::OUString & sComponentName, const rtl::OUString & sDocName, const
rtl::OUString & sOldDocName, const
com::sun::star::uno::Sequence<com::sun::star::uno::Any> & aArgs, bool
bMustBeSuccessfull) Line 190 C++
sclo.dll!ScXMLImportWrapper::Import(ImportFlags nMode, ErrCode &
rError) Line 512 C++
[Inline Frame] sclo.dll!ErrCode::operator bool() Line 85 C++
sclo.dll!ScDocShell::LoadXML(SfxMedium * pLoadMedium, const
com::sun::star::uno::Reference<com::sun::star::embed::XStorage> & xStor) Line
501 C++
sclo.dll!ScDocShell::Load(SfxMedium & rMedium) Line 660 C++
sfxlo.dll!SfxObjectShell::LoadOwnFormat(SfxMedium & rMedium) Line 3056
C++
sfxlo.dll!SfxObjectShell::DoLoad(SfxMedium * pMed) Line 725 C++
sfxlo.dll!SfxBaseModel::load(const
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &
seqArguments) Line 1795 C++
sfxlo.dll!`anonymous namespace'::SfxFrameLoader_Impl::load(const
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rArgs,
const com::sun::star::uno::Reference<com::sun::star::frame::XFrame> &
_rTargetFrame) Line 688 C++
fwklo.dll!framework::LoadEnv::impl_loadContent() Line 1152 C++
fwklo.dll!framework::LoadEnv::startLoading() Line 387 C++
fwklo.dll!framework::LoadDispatcher::impl_dispatch(const
com::sun::star::util::URL & rURL, const
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &
lArguments, const
com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener>
& xListener) Line 110 C++
fwklo.dll!framework::LoadDispatcher::dispatch(const
com::sun::star::util::URL & aURL, const
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &
lArguments) Line 52 C++
sfxlo.dll!sfx2::RecentDocsView::ExecuteHdl_Impl(sfx2::RecentDocsView *
__formal, void * p) Line 393 C++
[Inline Frame] vcllo.dll!Link<void *,void>::Call(void *) Line 84
C++
[Inline Frame] vcllo.dll!ImplHandleUserEvent(ImplSVEvent *) Line 1929
C++
vcllo.dll!ImplWindowFrameProc(vcl::Window * _pWindow, SalEvent nEvent,
const void * pEvent) Line 2482 C++
vcllo.dll!SalFrame::CallCallback(SalEvent nEvent, const void * pEvent)
Line 280 C++
[Inline Frame] vclplug_winlo.dll!ImplHandleUserEvent(HWND__ *) Line
4071 C++
vclplug_winlo.dll!SalFrameWndProc(HWND__ * hWnd, unsigned int nMsg,
unsigned int wParam, long lParam, bool & rDef) Line 5724 C++
vclplug_winlo.dll!SalFrameWndProcW(HWND__ * hWnd, unsigned int nMsg,
unsigned int wParam, long lParam) Line 5832 C++
[External Code]
[Inline Frame] vclplug_winlo.dll!ImplSalDispatchMessage(const tagMSG *)
Line 409 C++
vclplug_winlo.dll!ImplSalYield(bool bWait, bool
bHandleAllCurrentEvents) Line 440 C++
vclplug_winlo.dll!WinSalInstance::DoYield(bool bWait, bool
bHandleAllCurrentEvents) Line 511 C++
[Inline Frame] vcllo.dll!ImplYield(bool) Line 469 C++
[Inline Frame] vcllo.dll!Application::Yield() Line 537 C++
vcllo.dll!Application::Execute() Line 449 C++
sofficeapp.dll!desktop::Desktop::Main() Line 1637 C++
vcllo.dll!ImplSVMain() Line 199 C++
sofficeapp.dll!soffice_main() Line 169 C++
[Inline Frame] soffice.bin!sal_main() Line 48 C
[Inline Frame] soffice.bin!main(int) Line 47 C
soffice.bin!WinMain(void * _hinst, void * _dummy, char * _cmdline, int
_nshow) Line 47 C
[External Code]
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice-bugs/attachments/20181030/1d3c7f5b/attachment-0001.html>
More information about the Libreoffice-bugs
mailing list