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!
InfluxDB Appender für Log4J 1.x
17.03.2018
Nachdem ich vor einiger Zeit zwei Appender für Log4J 1.x vorgestellt habe, habe ich - motiviert durch meine Experimente mit Raspi und ADS-B - einen weiteren verfasst - diesmal zum Schreiben der Daten in eine Zeitreihendatenbank.
Weiterlesen...Android Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Git(lab|hub) Go GUI Gui Hardware Java Jupyter Komponenten Links Linux Markdown Markup Music Numerik PKI-X.509-CA Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
Ich habe mich ein wenig mit Attribut-Zertifikaten beschäftigt - Resultat sind einige Klassen zum leichteren Zugriff auf die enthaltenen Attribute...
Weiterlesen...Ich wollte eine Methode schaffen, neue Graphik-Primitiven, die zumindest in java.awt.Graphics2D - in Java noch fehlen, zu ergänzen.
Weiterlesen...Ich wollte eine Methode schaffen, unterschiedlichste Schraffuren in beliebigen Shapes zu erzeugen. diese Möglichkeit fehlt - zumindest in java.awt.Graphics2D - in Java noch.
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.