In article <518166ab.5070...@lyx.org>, Jean-Marc Lasgouttes <lasgout...@lyx.org> wrote:
> Le 01/05/2013 20:55, pdv a écrit : > > There are 2 occurences of calculate_qt_char_width, in TextMetrics and in > > RowPainter. > > Yes, I toggled both. > > > and there is at least one change which is not enclosed by these > > conditionals: In TextMetrics I changed rowBreakPoint() to return the > > breakpoint as well as the width, so that the subsequent call to > > rowWidth() is not needed anymore. > > > > I'm still many revisions behind master; > > I'll catch-up and see what I obtain with pmprof. > > It would be surprising that playing catch-up is enough. > > > I've done some timing with Instruments and a testdocument; > > with calculate_qt_char_width=0 GuiPainter::text takes 17.4s > > with calculate_qt_char_width=1 GuiPainter::text takes 4.5s > > What exactly takes 17.4s? I suppose that's the time taken by GuiPainter::text(), but I don't know enough of the Instruments app and it's modules to give any more details. I've now monitored both functions with pmprof: ( I scroll through a document of mine starting from the top down to the same location with the down arrow key (line per line not page per page) ) calculate_qt_char_widths = 0 #pmprof# text: 0.04msec, count=1044047, total=45155.01msec calculate_qt_char_widths = 1 #pmprof# text: 0.05msec, count=427662, total=21348.83msec #pmprof# textmetrics_textwidth: 0.00msec, count=285813, total=563.34msec "text" is from GuiPainter::text() in both cases I inserted the macro at the start of the function. Qualitatively this agrees with the Instruments timings, although the gain in text() is smaller and the time in TextMetrics::textWidth() is larger but still negligible compared to the time in GuiPainter::text(). > > > the time taken by TextMetrics::textMetrics is then 137ms > > > > Was this scrolling problem not an "OS X" issue? > > Yes, but I do not have OS X at hand. It is nevertheless important to > test all platforms. > > JMarc