Performance Verbesserungen - firebirdsql - c - rust

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
mjblechert
User
Beiträge: 1
Registriert: Montag 19. August 2024, 18:25

Hallo,

ich hoffe ich mache mich hier nicht zum Depp damit. Ich habe eine Anwendung die SQL Anfragen ausführt (teilweise 20k rows als result, das sind artikelstammdaten, die einmalig zum programmstart ermittelt werden.) - Das dauert für dieses Beispiel in Python rund 9 Sekunden.
Ich habe ChatGPT mal zum Spaß damit beauftragt das in C(++) zu schreiben und kam dabei auf ziemlich genau 0,9 Sekunden.

Die übliche Suche von "Wie kann ich die Performance von meinen SQL Queries verbessern" habe ich schon mehrmals gemacht.
Es scheint mir: Es gibt kein Modul für Python, das Rust oder C für SQL-Queries (firebird) benutzt und ich muss mein eigenes Modul mit maturin schreiben.

Habe ich etwas übersehen?
Benutzeravatar
__blackjack__
User
Beiträge: 13427
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@mjblechert: SQL-Abfragen selbst haben doch mit Python gar nichts zu tun. Das ist SQL und wird auf dem Datenbankserver ausgeführt. Dem ist völlig egal in welcher Programmiersprache der Code geschrieben ist, der ihm die Anfrage gestellt hat.

Der Geschwindigkeitsunterschied kommt entweder dadurch zustande, dass das Python-Programm mit den Daten noch was anderes macht als das C oder C++ Programm und *das* halt in Python langsamer ist. Oder das die beiden Programme letztendlich nicht das gleiche machen, man da also Äpfel mit Birnen vergleicht.

Ein Punkt ist, dass die beiden Firebird-Module für Python wohl in reinem Python geschrieben sind. Hat den Vorteil, dass die portabel und leicht zu installieren sind, weil man keinen C-Compiler braucht (oder C++/Rust/…), oder auf vorkompilierte Packages für die eigene Plattform angewiesen ist. Kann aber natürlich dadurch auch langsamer sein. Ob das jetzt einen Faktor 10 ausmacht, keine Ahnung. Müsste man mal messen.

Messen. Grundsätzlich etwas was man bei Performance-Problemen machen sollte. Schauen wo denn genau die Rechenzeit bleibt, damit man an der richtigen Stelle optimiert, und nicht an Stellen schraubt, die am Ende nur wenig Einfluss auf die Gesamtlaufzeit haben.

Code: Alles auswählen

    **** COMMODORE 64 BASIC V2 ****
 64K RAM SYSTEM  38911 BASIC BYTES FREE
   CYBERPUNX RETRO REPLAY 64KB - 3.8P
READY.
█
Benutzeravatar
DeaD_EyE
User
Beiträge: 1081
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Ist die SQL-Abfrage der C++ Version exakt dieselbe? Mach die gleiche Abfrage mit Python, aber verarbeite die Daten nicht. Möglicherweise machst du da etwas falsch.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten