[Bug] Serious degrade of text updating in CodeEditorComponent/AsyncUpdater JUCE8

Not to throw a wrench into this discussion, but I decided to see if this would work better with a Timer, than AsyncUpdater.

I really don’t understand what I’m seeing.

All I am doing here is calling a Timer every 10 ms, and then printing out a timestamp of when the timerCallback occurs.

In JUCE 7, the callbacks occur with elapsed times between them of approximately 5~15 ms.

JUCE 7.0.12

00:07:23.321 663 timerCallback, elapsed 00:00:00.014 686 - 14 ms
00:07:23.328 060 timerCallback, elapsed 00:00:00.006 396 - 6 ms
00:07:23.338 403 timerCallback, elapsed 00:00:00.010 343 - 10 ms
00:07:23.347 810 timerCallback, elapsed 00:00:00.009 406 - 9 ms
00:07:23.359 500 timerCallback, elapsed 00:00:00.011 689 - 11 ms
00:07:23.372 375 timerCallback, elapsed 00:00:00.012 875 - 12 ms
00:07:23.380 880 timerCallback, elapsed 00:00:00.008 505 - 8 ms
00:07:23.390 343 timerCallback, elapsed 00:00:00.009 462 - 9 ms
00:07:23.405 149 timerCallback, elapsed 00:00:00.014 806 - 14 ms
00:07:23.410 729 timerCallback, elapsed 00:00:00.005 579 - 5 ms
00:07:23.421 797 timerCallback, elapsed 00:00:00.011 068 - 11 ms
00:07:23.430 300 timerCallback, elapsed 00:00:00.008 502 - 8 ms
00:07:23.440 922 timerCallback, elapsed 00:00:00.010 621 - 10 ms
00:07:23.455 554 timerCallback, elapsed 00:00:00.014 631 - 14 ms
00:07:23.461 246 timerCallback, elapsed 00:00:00.005 692 - 5 ms
00:07:23.473 636 timerCallback, elapsed 00:00:00.012 389 - 12 ms
00:07:23.488 600 timerCallback, elapsed 00:00:00.014 963 - 14 ms
00:07:23.495 738 timerCallback, elapsed 00:00:00.007 138 - 7 ms
00:07:23.506 964 timerCallback, elapsed 00:00:00.011 226 - 11 ms
00:07:23.522 907 timerCallback, elapsed 00:00:00.015 942 - 15 ms
00:07:23.526 401 timerCallback, elapsed 00:00:00.003 494 - 3 ms

In JUCE 8, I get a very strange output that starts out similar, but then turns into alternating elapsed times between 0~84 ms.

JUCE 8.0.3

00:14:49.654 284 timerCallback, elapsed 00:00:00.015 629 - 15 ms
00:14:49.660 709 timerCallback, elapsed 00:00:00.006 425 - 6 ms
00:14:49.673 744 timerCallback, elapsed 00:00:00.013 034 - 13 ms
00:14:49.689 036 timerCallback, elapsed 00:00:00.015 291 - 15 ms
00:14:49.694 294 timerCallback, elapsed 00:00:00.005 258 - 5 ms
00:14:49.706 950 timerCallback, elapsed 00:00:00.012 655 - 12 ms
00:14:49.718 493 timerCallback, elapsed 00:00:00.011 543 - 11 ms
00:14:49.804 300 timerCallback, elapsed 00:00:00.085 807 - 85 ms
00:14:49.804 564 timerCallback, elapsed 00:00:00.000 264 - 0 ms
00:14:49.886 819 timerCallback, elapsed 00:00:00.082 254 - 82 ms
00:14:49.886 998 timerCallback, elapsed 00:00:00.000 178 - 0 ms
00:14:49.969 333 timerCallback, elapsed 00:00:00.082 335 - 82 ms
00:14:49.969 517 timerCallback, elapsed 00:00:00.000 183 - 0 ms
00:14:50.053 782 timerCallback, elapsed 00:00:00.084 264 - 84 ms
00:14:50.053 966 timerCallback, elapsed 00:00:00.000 183 - 0 ms
00:14:50.136 089 timerCallback, elapsed 00:00:00.082 123 - 82 ms
00:14:50.136 308 timerCallback, elapsed 00:00:00.000 218 - 0 ms
00:14:50.220 276 timerCallback, elapsed 00:00:00.083 967 - 83 ms
00:14:50.220 470 timerCallback, elapsed 00:00:00.000 194 - 0 ms
00:14:50.303 846 timerCallback, elapsed 00:00:00.083 375 - 83 ms
00:14:50.304 134 timerCallback, elapsed 00:00:00.000 288 - 0 ms
00:14:50.388 589 timerCallback, elapsed 00:00:00.084 454 - 84 ms
00:14:50.388 803 timerCallback, elapsed 00:00:00.000 214 - 0 ms
00:14:50.470 692 timerCallback, elapsed 00:00:00.081 889 - 81 ms
00:14:50.470 907 timerCallback, elapsed 00:00:00.000 214 - 0 ms
00:14:50.553 486 timerCallback, elapsed 00:00:00.082 579 - 82 ms
00:14:50.553 712 timerCallback, elapsed 00:00:00.000 226 - 0 ms
00:14:50.638 764 timerCallback, elapsed 00:00:00.085 051 - 85 ms
00:14:50.638 964 timerCallback, elapsed 00:00:00.000 199 - 0 ms
00:14:50.722 107 timerCallback, elapsed 00:00:00.083 142 - 83 ms
00:14:50.722 353 timerCallback, elapsed 00:00:00.000 246 - 0 ms
00:14:50.804 076 timerCallback, elapsed 00:00:00.081 723 - 81 ms

The project for this is here:
CodeEditorTest4.zip (13.2 KB)

Unless I’m crazy and doing something really wrong. But this is the timerCallback:

private:
    class TimerUpdater : public juce::Timer
    {
    public:
        TimerUpdater(MainComponent& mainIn)
        : main (mainIn) {}
        
    private:
        virtual void timerCallback() override
        {
            auto nowTime = juce::Time::getMillisecondCounterHiRes();
            auto elapsed = nowTime - lastTime;
            lastTime = nowTime;
            auto millis  = ((int) (elapsed) % 1000);

            // add a timestamp indicating this function was called
            juce::String messageText;
            messageText << main.getTimeStamp(nowTime) << " timerCallback, elapsed " << main.getTimeStamp(elapsed) << " - " << juce::String(millis) <<" ms\n";

            // add the text or text chunk to the end of the messageDisplay
            main.messageDisplay->moveCaretToEnd(false);
            main.messageDisplay->insertTextAtCaret (messageText);
        }
        MainComponent& main;
        double lastTime;

EDIT:

Not to mention… if I happen to be running another program on this laptop, that uses > 150% or so of 1 CPU, the time between callbacks in the JUCE 8 version increases quite a bit, while the JUCE 7-compiled version does not.

JUCE 8.0.3

00:26:31.887 431 timerCallback, elapsed 00:00:00.138 541 - 138 ms
00:26:31.887 763 timerCallback, elapsed 00:00:00.000 332 - 0 ms
00:26:31.898 105 timerCallback, elapsed 00:00:00.010 341 - 10 ms
00:26:32.034 466 timerCallback, elapsed 00:00:00.136 361 - 136 ms
00:26:32.167 861 timerCallback, elapsed 00:00:00.133 394 - 133 ms
00:26:32.168 182 timerCallback, elapsed 00:00:00.000 320 - 0 ms
00:26:32.179 208 timerCallback, elapsed 00:00:00.011 026 - 11 ms
00:26:32.315 768 timerCallback, elapsed 00:00:00.136 559 - 136 ms
00:26:32.316 077 timerCallback, elapsed 00:00:00.000 309 - 0 ms
00:26:32.450 443 timerCallback, elapsed 00:00:00.134 365 - 134 ms
00:26:32.450 788 timerCallback, elapsed 00:00:00.000 344 - 0 ms
00:26:32.582 202 timerCallback, elapsed 00:00:00.131 414 - 131 ms
00:26:32.582 531 timerCallback, elapsed 00:00:00.000 328 - 0 ms
00:26:32.720 748 timerCallback, elapsed 00:00:00.138 216 - 138 ms
00:26:32.721 070 timerCallback, elapsed 00:00:00.000 322 - 0 ms
00:26:32.731 187 timerCallback, elapsed 00:00:00.010 116 - 10 ms
00:26:32.865 699 timerCallback, elapsed 00:00:00.134 511 - 134 ms
00:26:32.866 031 timerCallback, elapsed 00:00:00.000 332 - 0 ms