[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #64975] Octave for Windows extremely slow

From: Markus Mützel
Subject: [Octave-bug-tracker] [bug #64975] Octave for Windows extremely slow
Date: Mon, 4 Dec 2023 02:32:42 -0500 (EST)


                 Summary: Octave for Windows extremely slow
                   Group: GNU Octave
               Submitter: mmuetzel
               Submitted: Mon 04 Dec 2023 08:32:39 AM CET
                Category: Interpreter
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Regression
                  Status: None
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
                 Release: 9.0.90
         Discussion Lock: Any
        Operating System: Microsoft Windows
           Fixed Release: None
         Planned Release: None


Follow-up Comments:

Date: Mon 04 Dec 2023 08:32:39 AM CET By: Markus Mützel <mmuetzel>
Current builds of Octave for Windows are extremely slow.
Running `__run_test_suite__` used to take about 10 minutes on my hardware. It
is now taking more than 45 minutes.

That seems to be related to us switching from the (older) MSVCRT to the
(newer) UCRT in MXE Octave and an update in gnulib during the last year. (See
also: https://octave.discourse.group/t/merging-branches-for-octave-9/4978/38

Attaching a profiler indicates that a significant proportion of the execution
is spent in `setlocale`. Most of those backtraces are coming through
`octave::sys::fnmatch` → `octave::symbol_table::clear_function_pattern`.
Every call of `octave::sys::fnmatch` seems to lead to `setlocale` being called
6 times.

Possible options are to revert to linking with the MSVCRT, or to directly call
a similar Windows API function to do the function pattern matching.
A candidate for the latter might be `PathMatchSpecW` or `PathMatchSpecA`:


Reply to this item at:


Message sent via Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]