https://bugs.documentfoundation.org/show_bug.cgi?id=144777
Julien Nabet <serval2...@yahoo.fr> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |er...@redhat.com, | |noelgran...@gmail.com --- Comment #13 from Julien Nabet <serval2...@yahoo.fr> --- Eike/Noel: the Flamegraph shows that a lot of time is in ScTable::ValidQuery See https://opengrok.libreoffice.org/xref/core/sc/source/core/data/table3.cxx?r=b60b6bfa#2979 I noticed in the loop "for (const auto& rItem : rItems)" at line 3039 that perhaps changing the order of test may help. For example, I thought about putting: 3069 else if (rParam.mbRangeLookup) 3070 { 3071 std::pair<bool,bool> aThisRes = 3072 aEval.compareByRangeLookup(aCell, nCol, nRow, rEntry, rItem); 3073 aRes.first |= aThisRes.first; 3074 aRes.second |= aThisRes.second; 3075 } 3076 3077 if (aRes.first && aRes.second) 3078 break; just after: 3041 if (rItem.meType == ScQueryEntry::ByTextColor) 3042 { 3043 std::pair<bool, bool> aThisRes 3044 = aEval.compareByTextColor(nCol, nRow, nTab, rItem); 3045 aRes.first |= aThisRes.first; 3046 aRes.second |= aThisRes.second; 3047 } 3048 else if (rItem.meType == ScQueryEntry::ByBackgroundColor) 3049 { 3050 std::pair<bool,bool> aThisRes = 3051 aEval.compareByBackgroundColor(nCol, nRow, nTab, rItem); 3052 aRes.first |= aThisRes.first; 3053 aRes.second |= aThisRes.second; 3054 } so these would be at the end: 3055 else if (aEval.isQueryByValue(rItem, nCol, nRow, aCell)) 3056 { 3057 std::pair<bool,bool> aThisRes = 3058 aEval.compareByValue(aCell, nCol, nRow, rEntry, rItem, pContext); 3059 aRes.first |= aThisRes.first; 3060 aRes.second |= aThisRes.second; 3061 } 3062 else if (aEval.isQueryByString(rEntry, rItem, nCol, nRow, aCell)) 3063 { 3064 std::pair<bool,bool> aThisRes = 3065 aEval.compareByString(aCell, nRow, rEntry, rItem, pContext); 3066 aRes.first |= aThisRes.first; 3067 aRes.second |= aThisRes.second; 3068 } So we would call "isQueryByValue" and/or "isQueryByString" only if necessary. Now, I don't know if the order of evaluation matters and could change the final result. -- You are receiving this mail because: You are the assignee for the bug.