eclipse-platform / eclipse.platform.swt

Eclipse SWT
https://www.eclipse.org/swt/
Eclipse Public License 2.0
118 stars 139 forks source link

[GTK4] Tree slower then GTK3 #1480

Open Latha-Patil opened 2 months ago

Latha-Patil commented 2 months ago

Describe the bug The testcases under package org.eclipse.swt.tests.junit.performance are taking longer to execute.

Testcase : Test_org_eclipse_swt_widgets_Tree.java this testcase takes around 700 seconds on Windows SWT where as it takes around 6000 seconds on Linux SWT / Sometimes does not respond (May be because I am using VM)

Testcase : BenchmarkSwtMultithreading.java This testcase is also having timing differences when executed in windows and Linux.

Testcase : Test_situational.java Not running

To Reproduce Setup SWT workspace in Linux and run above testcases .

Expected behavior Performance can be improved

Screenshots If applicable, add screenshots to help explain your problem.

Environment:

  1. Select the platform(s) on which the behavior is seen:

      • [ ] All OS
      • [ ] Windows
      • [x] Linux
      • [ ] macOS
  2. Additional OS info (e.g. OS version, Linux Desktop, etc) Ubuntu 22.04.4 LTS (VM on Windows)

Additional context Identified GTK APIs (Deprecated since 4.10) causing the delay for testcase Test_org_eclipse_swt_widgets_Tree are https://docs.gtk.org/gtk4/method.TreeModel.get_path.html https://docs.gtk.org/gtk4/method.TreeStore.set.html

GTK4_LINUX_1

GTK4_Linux_2

GTK4_Linux_3

228

jukzi commented 2 months ago

"longer" then what? before? windows? an apple? do you plan to contribute improvements?

HeikoKlare commented 2 months ago

If I am not mistaken, this is a GTK4 issue (correct me, if I am wrong @Latha-Patil). So execution times are longer than on GTK3. This issue is supposed to be a hint for the GTK4 port implementation (#228) that there might be performance problems / necessity to use different APIs. It is not related to productively used SWT on GTK.

lathapatil commented 2 months ago

I created the issue with different account by mistake. @HeikoKlare , When run with GTK3, the test case Test_org_eclipse_swt_widgets_Tree.java takes around 5753 seconds to complete, whereas with GTK4, the test case becomes unresponsive.

GTK3_linux_JunitTest

GTK4_Linux_JunitTest

I suspect that replacing the deprecated APIs related to the tree widget (Deprecated since 4.10) might help resolve the performance issue observed in this test case.

The same test case executed in Windows SWT (which uses Win32 APIs) takes significantly less time, around 700 seconds.

lathapatil commented 2 months ago

"longer" then what? before? windows? an apple? do you plan to contribute improvements?

Longer than Windows SWT and behavior with GTK3 and GTK4 are described here.

I would like to further check on this but not soon.

HeikoKlare commented 2 months ago

Thank you for the additional information! So it seems like even on GTK3 the performance is worse (than on Win32). This is probably partly due to the environment (in particular using a VM). But I would keep the issue specific to GTK4 for now, as I so not see any regression with respect to GTK3 that would require a timely fix.

basilevs commented 1 month ago

Tree is just slow on any GTK this is a duplicate of #882 . These tests demonstrate quadratic complexity of Tree population on Linux in standard scenarios.