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

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    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.