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

  • AtomicInteger vs. Integer

    24.03.2019

    Ich habe am Wochenende wieder einmal mit Java-Benchmarks experimentiert

    Weiterlesen...

Neueste Artikel

  • Konstruktive Geometrie mit dem Computer

    Ich habe in einem vorhergehenden Artikel beschrieben, dass ich eine weitere neue Graphik-Primitive erstellt habe. Dabei musste ich mir meine verschütteten Trigonometrie-Kenntnisse wieder vor Augen führen - mit Bleistift und Papier. Das müsste doch auch anders gehen dachte ich mir und begann...

    Weiterlesen...
  • GitHub-Projekte

    Mal abgesehen von den anderen Links, die ich in unregelmäßigen Intervallen hier poste kommt heute ein Schwung (aus meiner Sicht) interessanter/skurriler Projekte auf GitHub:

    Weiterlesen...
  • Mehrere Datenbanken und Postgis-Erweiterung in Docker

    Ich hatte ja schon beschrieben, dass ich mich in diesem Jahr wieder intensiver um mein Geoinformationssystem EBMap4D kümmern möchte. Dazu habe ich jetzt einige infrastrukturelle Vorbereitungen getroffen...

    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.