Hey stackoverflow Gemeinschaft!Zu wenig CPU-Auslastung in Java
Ich habe ein Problem, wo ein hoch involviertes algorithmisches Programm TOO LITTLE CPU-Auslastung verwendet: irgendwo zwischen 3 und 4%. Es dauert sehr lange, Ergebnisse zurückzugeben, und ich glaube, es funktioniert einfach nicht genug.
Haben irgendwelche Genies irgendwelche Ideen, warum das passieren würde - wenn überhaupt, würde ich 100% Auslastung erwarten. Ein zusätzliches Detail ist, dass das Programm Einfügungen in eine sqlite3-Datenbank vornimmt, und ja, es gibt viele JNI-Aufrufe über die sqlite3jdbc-Bibliothek, glaube ich. (Beachten Sie, dass ich diese Einfügungen mit einem PreparedQuery-Stapel früher verschieben wollte, aber das verursachte größere Speicherprobleme - es gibt viele Daten).
Vielen Dank im Voraus
UPDATE: Fest. Ja, ich war nur ein Dummkopf, aber ich hatte nicht erwartet, dass sqlite eine neue Transaktion starten würde und so viel Overhead machen würde.
Ich benutze jetzt eine PreparedStatement und Warteschlange 32768 Einträge vor dem Einfügen - schien mir eine gut genug Nummer.
Die Multithread-Kommunikation ist langsamer als das Einreihen der Updates in die Warteschlange und das Löschen derselben im selben Thread und auch komplizierter, um Fehler zu vermeiden für Programmierer, die nicht "threadsicher" geboren sind. – Blaisorblade