bugGNU Octave - Bugs: bug #53845, Octave too slow when plotting...


bug #53845: Octave too slow when plotting large arrays with QT graphics toolkit (MXE Octave)

Submitter:  None
Submitted:  Sun 06 May 2018 02:07:04 AM UTC
Category:  Plotting Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Performance
Status:  Fixed Assigned to:  None
Originator Name:  Alex Originator Email:  -email is unavailable-
Open/Closed:  * Closed Release:  * 4.4.0
Operating System:  * Microsoft Windows Fixed Release:  None
Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup

Jump to the original submission

Tue 11 Sep 2018 04:25:09 PM UTC, comment #14: 

(ver421 seems 2x faster than ver 441 for repeated plots after first, but its in the noise)
Including the opengl32.dll workaround and tested with a 480x640 uint8 BW image on Win7 Pro Intel i7 32Gb Nvidia Quadro M2000M;
Octave421 1st 'imshow' in 0.8sec, thereafter consistently at 0.15sec for repeats
Octave441 1st 'imshow' in 0.4sec, thereafter consistently at 0.33sec for repeats.
Thank you for supporting Octave!

Ray Patel <rayzrocket>
Fri 31 Aug 2018 08:22:07 AM UTC, comment #13: 

Just upgraded to 4.4.1 - its much more faster. Thanks for your work.

Sergey Parfenyuk <sergniko>
Tue 28 Aug 2018 11:38:03 AM UTC, comment #12: 

Octave 4.4.1 ships a faster opengl32.dll. Can you upgrade to the newer version?

Markus Mützel <mmuetzel>
Group administrator
Tue 28 Aug 2018 09:18:47 AM UTC, comment #11: 

Proposed solution to rename opengl32.dll does not work for my Octave 4.4.0 on Windows 7 32-bit with Intel G31/G33 graphics. After renaming I have got error on starting Octave GUI - entry point glBegin@4 not found in DLL opengl32.dll.

Sergey Parfenyuk <sergniko>
Fri 03 Aug 2018 07:16:05 PM UTC, comment #10: 

The opengl32.dll that will be shipped with Octave 4.4.1 will (hopefully) be performing much faster than the one we shipped before.
I don't think it'll hurt to leave those sentences in the manual since using hardware rendering may still be faster.

Closing as fixed.

Markus Mützel <mmuetzel>
Group administrator
Wed 11 Jul 2018 06:44:40 PM UTC, comment #9: 

@anonymous from comment #8: What do you mean by "default opengl32.dll"? The one that we ship with Octave starting with version 4.4? Or do you mean the one that is installed with your graphics card driver?

I just tried with and without that dll in Octave's "bin" folder and the following works for me in both cases:

demo plot 1
print -dpng test.png

So I am assuming the latter.
I also slightly re-organized and pushed the patch to stable here:

Markus Mützel <mmuetzel>
Group administrator
Thu 05 Jul 2018 03:15:59 PM UTC, comment #8: 

@Markus: IIRC printing does not work with the default opengl32.dll (OpenGL 1.1), due to the lack of framebuffer support. This should probably be mentioned also.

Wed 04 Jul 2018 08:05:14 PM UTC, comment #7: 

The attached patch adds some language to the manual to describe the work-around for disabling OpenGL software rendering.

(file #44507)

Markus Mützel <mmuetzel>
Group administrator
Tue 03 Jul 2018 08:27:23 PM UTC, comment #6: 

It would be excellent to be able to switch on the fly between hardware and software acceleration.  See bug #44916 which is similar (asking for a --softwareopengl option).

At the very least, it does seem like a documentation solution should be made right now.

Rik <rik5>
Group administrator
Tue 03 Jul 2018 04:37:50 PM UTC, comment #5: 

Matlab allows to "automagically" change whether OpenGL with hardware acceleration or software is used. [1]

The syntax is:


It would be nice if Octave had something similar.
Even better if this worked cross-platform.

For now the work-around could be documented in " Customizing Toolkit Behavior".

[1]: https://de.mathworks.com/help/matlab/creating_plots/resolving-low-level-graphics-issues.html

Markus Mützel <mmuetzel>
Group administrator
Fri 29 Jun 2018 07:03:35 PM UTC, comment #4: 

Marking as confirmed.  The fact that there is a workaround means this is not a showstopper bug.

Given the diversity of graphics cards out there, and the improbability of creating a good test to run to qualify them, we probably need to leave this as is.

However, should there be some documentation about how individual users can try this fix to see if it works for them?  Where would such documentation go?

Rik <rik5>
Group administrator
Mon 07 May 2018 04:55:56 PM UTC, comment #3: 

That is great! I had noticed a performance decrease, but hadn't gotten around to trying a general direct performance comparison. This work around makes a dramatic, immediate difference!

Marshall <marsian>
Mon 07 May 2018 12:08:11 AM UTC, comment #2: 

Fantastic! Its solution is as simple as efficient. Many thanks Markus.

Sun 06 May 2018 11:52:41 AM UTC, comment #1: 

Octave 4.4.0 for Windows uses software rendering by default via a opengl32.dll shipped with Octave. Earlier versions used the system's opengl32.dll which turned out to be unreliable with graphics cards drivers from many different vendors.

You could try re-naming opengl32.dll that you find in the "bin" directory where Octave is installed. That should make Octave pick up the system's opengl32.dll (as previous versions did).
Does that make any difference with respect to performance? (It does for me.)

Markus Mützel <mmuetzel>
Group administrator
Sun 06 May 2018 02:07:04 AM UTC, original submission:  

Octave 4.2.2 and 4.4.0, Win32 or Win64, with standard installation from ZIP file, in Windows 10, running QT graphics toolkit, gets very slow when plotting large arrays. Just start the Octave gui and type plot(1:10^6); plot(10^6:-1:1). The Octave becomes very slow, almost freezing, and sometimes, by shifting the focus from the figure to the command window, it does not respond. The same does not happen when Octave 4.2.1 is running on the same computer or when the Gnuplot is set as the graphics toolkit.



(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:

Attached Files
file #44507:  bug53846_disable_software_rendering.patch added by mmuetzel (1KiB - application/octet-stream)


   bug dependencies.

Items that depend on this one: None found


Carbon-Copy List
  • -email is unavailable- added by rayzrocket (Posted a comment)
  • -email is unavailable- added by sergniko (Posted a comment)
  • -email is unavailable- added by rik5 (Posted a comment)
  • -email is unavailable- added by marsian (Posted a comment)
  • -email is unavailable- added by mmuetzel (Posted a comment)

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.


    Follow 7 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2018-08-03 mmuetzel StatusReady For Test Fixed
        Open/ClosedOpen Closed
    2018-07-11 mmuetzel StatusConfirmed Ready For Test
    2018-07-04 mmuetzel Attached File- Added bug53846_disable_software_rendering.patch, #44507
    2018-07-03 rik5 Dependencies- Depends on bugs #44916
    2018-06-29 rik5 StatusNone Confirmed
        SummaryOctave too slow when plotting large arrays with QT graphics toolkit Octave too slow when plotting large arrays with QT graphics toolkit (MXE Octave)

    Back to the top

    Powered by Savane 3.13-4448.
    Corresponding source code