JFileChooser & Antivirus - oh my!

vorhergehende Artikel in: Java Komponenten sQLshell GUI
13.08.2021

Ich setze die sQLshell auch in dem Job ein, dem ich zum Zwecke des Bezahlens der Kuchen-Zutaten nachgehe. Auf den vom aktuellen Kunden gestellten Laptops hatte ich damit seltsame Performanceprobleme...

Es existieren in der sQLshell Actions, um sich den Inhalt oder die Struktur einer Tabelle anzusehen. Im Visuellen Abfrageeditor kann man Tabellen per Drag'n'Drop anordnen und visuell Joins zwischen ihnen definieren und Spalten für die zu generierende Abfrage selektieren. Alle diese Funktionalitäten waren auf dem Kundenlaptop unglaublich viel langsamer als anderswo.

Ich schob das zunächst auf eine langsamere Datenbank - denn dadurch unterschied sich natürlich der Kundenlaptop von meinen Testumgebungen. Und da ich die Performanceprobleme auch meist beim Zugriff auf Tabellenmetadaten wahrnahm, festigte sich dieser Verdacht - bis ich Messungen durchführte. Diese Messungen offenbarten, dass das Auslesen der Metadaten im Millisekundenbereich angesiedelt war - das Performanceproblem musste also andere Ursachen haben.

Nun muss ich vielleicht zunächst erklären, dass dieses nicht das einzige Performanceproblem an diesen Laptops ist - öffnet man den Windows-Dateiexplorer dauert es ewig, bis die Ansicht mit den Ordnern und Dateien bevölkert ist. Irgendetwas - sei es Virenjäger oder Cloudsynchronisation scheint sich da massivst auf die Performance des Dateisystems auszuwirken.

Aber da ich in der sQLshell an den betreffenden Stellen keine Dateisystemoperationen ausführte (wie ich damals noch annahm), checkte ich zunächst mal alle anderen möglichen Ursachen.

Nach langer, mühevoller Analyse stellte sich heraus, dass das Anlegen zweier Actions für die Toolbar mehrere Sekunden dauerte. Diese beiden Actions hatten gemein, dass sie von einer Basisklasse ableiteten, die Dateioperationen abbildete - und dazu unter anderem einen Dateiauswahldialog (JFileChooser) anbietet. Dieser wurde direkt bei der Konstruktion der Action instantiiert. Die beiden Actions waren ansonsten sehr schlank - im Konstruktor passierte nichts, und auch die Initialisierung der Klassenvariablen war nichts, das mehrere Sekunden dauern durfte. Also kommentierte ich testweise die Instantiierung des JFileChooser aus - und siehe da: die Performance auf dem Kundenlaptop war de gleiche wie auf meinen lokalen Testumgebungen.

Zusammenfassend kann man also sagenm, dass JFileChooser bereits bei der Instantiierung mit dem Dateisystem dergestalt interagiert, dass unter Windows mit der richtigen Kombination aus Cloudsynchronisierung und Virenschutz mehrere Sekunden vergehen können, bis der Vorgang abgeschlossen ist. Daher ist es besser (und die sQLshell ist inzwischen komplett dahingehend umgestellt) einen JFileChooser wirklich nur dann zu instantiieren, wenn er auch wirklich angezeigt werden soll!

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Aviator + Websockets

    15.06.2019

    Nachdem ich in den letzten Wochen und Monaten meine Zeit und Energie in die sQLshell gesteckt habe - was sowohl Bugfixing als auch neue Features betraf - habe ich nun endlich die Zeit gefunden, ein bereits lange überfälliges Feature an dWb+ und speziell am aviator zu implementieren.

    Weiterlesen...

Neueste Artikel

  • Neue Version plantumlinterfaceproxy napkin look

    Es gibt eine neue Version des Projektes plantumlinterfaceproxy - Codename napkin look.

    Weiterlesen...
  • Apache HTTPCore5 funktioniert nicht mit Docker

    Ich habe neulich drei Stunden meines Lebens verschwendet weil ich unbedingt die neueste Version der HTTPCore5 Library von Apache einsetzen wollte.

    Weiterlesen...
  • Entwurfsmodus für beliebige SVG Graphiken

    Nachdem ich in der Vergangenheit immer wieder Weiterentwicklungen der Idee vorgestellt habe, Graphiken mit dem Computer so zu ezeugen dass sie eine gewisse "handgemachte" Anmutung haben, habe ich nunmehr die durchschlagende Idee gehabt:

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.