AceConfigDialog-3.0.lua:1845: Performance issue - `Open()` causes ~3.7s freeze when LSM loads many sound files #686


Open
  • wolf_momo created this issue Nov 29, 2025
    AceConfigDialog-3.0-89
    AceConfigDialog-3.0.lua
    #line 1845 `Open()` function causes ~3.7s freeze when options table contains many items

     

    When the options table contains a large number of items (e.g., hundreds of sound file options), `AceConfigDialog:Open()` causes a significant performance freeze (~3.7 seconds) when opening options menus. This is particularly noticeable in addons like WeakAuras when switching to tabs with many options or toggling options that trigger UI updates.

     

    Performance Data:
    `AceConfigDialog:Open()` takes approximately 3700-3800ms to complete
    The bottleneck occurs during full UI reconstruction in `FeedGroup()` → `FeedOptions()`

     

    Call Stack:
     
    FillOptions()
      → UpdateOptions()
        → RegisterOptionsTable()
          → AceConfigDialog:Open() [line 1845]
            → FeedGroup()
              → FeedOptions()
                → Creating all UI widgets

     

    Root Cause:
    `AceConfigDialog:Open()` always does a full rebuild of the entire options interface with no incremental update mechanism. When toggling options, `ConfigTableChange` → `ConfigTableChanged` → `Open` triggers unnecessary full UI reconstruction even for simple value changes.

     

    Issue:
    -- AceConfigDialog-3.0.lua:1845
    function AceConfigDialog:Open(appName, container, ...)
        -- ... setup code ...
        FeedGroup(group, options, path, appName, container)  -- Always rebuilds entire UI
    end
    The function creates all UI widgets (buttons, input fields, dropdown menus, etc.) even for hidden options, and performs layout calculations for all widgets. This becomes exponentially slower as the number of options increases (e.g., when there are hundreds of selectable items in dropdown menus).

     


To post a comment, please login or register a new account.