Wie kann das sein!? Leistungsunterschied PC vs. Laptop

Phyx

Neu angemeldet
Registriert
31 Dez. 2013
Beiträge
13
Hallo zusammen,

ein selbstgeschriebenenes Javaprogramm muss recht große Text-Daten verarbeiten und werkelt sehr viel auf dem Arbeitsspeicher.
Bei 500 KB Input an Textdaten braucht das Programm auf meinem Laptop bis es Ergebnisse ausspuckt 6 Minuten 50 Sekunden.
Auf meinem PC allerdings 11 bis 12 Minuten! Ich frage mich woran das liegt und ob mein PC System einfach so schlecht ist oder ob ich irgendwelche fatalen Komponenten oder auch Systemeinstellungen habe. Auf beiden läuft Windows 7.

PC
CPU: Phenom II X4 960T @3.8GHz
CPU-Kühler: Scythe Katana 3
RAM: 2 x 2GB
Festplatten: 2 mit 7200 U/Min
Grafikkarte: ATI HD7770
Mainboard: AsRock Extreme 4 970

Laptop
CPU: Intel i5 3337u 1.8 GHz Turbo 2.7GHz
Festplatte: 524 GB, 24GB Flashspeicher für System + 500GB 5400 U/Min
Grafik: HD4000
RAM: 10 GB. 2GB festgelötet + 8GB dazugesteckt

Kann mir jemand sagen wie das sein kann? Für mich sieht höchstens der Arbeitsspeicher kritisch aus. Aber den macht das Programm nun auch nicht voll. Es werden ca. 1,6 GB davon belegt für eine Instanz.

Ich fände sehr interessant den Flaschenhals zu finden. Ein CPU-Kern wird voll ausgelastet dabei. Kann das auch an der CPU liegen?!

Vielen Dank für Ideen wo das Problem ist. Oder auch einfach nur Klarstellung, dass es eben so ist und an irgendwelchen Fehlern in der Einstellungen / Zusammenstellung liegt. :eek:
 
Zuletzt bearbeitet:
Na liegt doch auf der Hand, der Laptop hat einen 24 GB Flashspeicher und kann deshalb die Daten schneller verarbeiten.
 
  • Thread Starter Thread Starter
  • #3
Also die 500 kB werden zum Start der Anwendung geladen und zwischengespeichert. Es ist auch eine zusammenhängende Datei und nicht viele kleine.
Diese Startphase ist auf beiden Rechnern auch eine vernachlässigbare geringe Zeitspanne. 15 Sekunden vielleicht. Von ~7 bzw ~12 Minuten.

Meinst du der Flashspeicher macht's trotzdem? Ich dachte der würde nur zum Boosten vom Windows Boot genutzt.
 
Das Programm braucht 1,6GB von 4GB RAM wie viel RAM ist beelgt wenn das Programm nicht läuft?

Also ausgehend von Windows 7 und das auf dem Rechner noch andere Sachen laufen würde ich "zu wenig RAM" nicht ausschließen. Allerdings kann man bei dem erschreckenden Mangel an Informationen eigentlich kaum was sicher sagen.
 
Genauere Angaben zum RAM wären vielleicht nicht schlecht wenn du sagst, dass "sehr viel" da verarbeitet wird.
Ansonsten kann du dir ja mal die Zeiten für verschiedene Operationen ausgeben lassen (öffnen der Datei, einlesen der Zeilen/Werte/kA, Kopiervorgang usw...) und anschließend vergleichen. Ich weiß ja nicht, was dein Programm genau macht, aber wenn auffällt, dass Operation X auf dem PC deutlich länger dauert als Operation X auf dem Notebook, dann kannst du ja nachschauen, was Operation X macht und dann kennst du deinen Flaschenhals ;)
 
  • Thread Starter Thread Starter
  • #6
1,5 GB sollten durchschnittlich belegt sein. Also mit Windows und Webbrowser.

Es gibt noch eine Phase in der vor allem Strings in HashMaps gesucht werden und auch verglichen werden. Parallel werden Ganzzahlen und Fließkommazahlen in Arrays angelegt.
Im Anschluss wird auf diese Zahlen zugegriffen um Wahrscheinlichkeitspfad (Viterbi Algorithmus) zu berechnen. Für die Pfad muss nochmal eine Menge Speicher reserviert werden, da man am Ende den Pfad zurückverfolgen können muss.

Informationsmangel herrscht tatsächlich. Aber ich weiß ja selbst nicht alles, sonst würde ich eventuell selbst auf den Grund kommen und würde hier nicht nach Erfahrungen und Fachwissen fragen müssen. Eine Idee wäre das der Intel Prozessor eine bessere Zugriffsgeschwindigkeit auf den RAM hat oder von mir aus Strings effizienter vergleicht oder auch Multiplikationen von Fließkommas in atemberaubender Geschwindigkeit (im Vergleich zum Phenom) hinlegt...
jedoch fehlt mir hier das Wissen um die Architekturen in diesen speziellen Gebieten zu beurteilen
 
Gerade bei Singlethreaded Anwendungen kann der i5 schon schneller sein. Das muss natürlich nicht der einzige Faktor sein.
 
  • Thread Starter Thread Starter
  • #8
Naja 2,7 GHz gegen 3,8 Ghz und dann fast doppelt solange... das wäre ein ziemliches Armutszeugnis, oder nicht?
Ich werde wohl auch mal auf anderen Systemen die Zeit messen um irgendwelche Faktoren bestimmen zu können...
 
Hast du mal ein paar andere CPU-Benchmarks jeweils durchlaufen lassen? Und andere Algorithmen, die wesentlich einfacher sind? Ist der Abstand reproduzierbar?
 
  • Thread Starter Thread Starter
  • #10
Also ich hab das Programm mehrere Male auf beiden ausgeführt. Auch mit anderen Inputs (aber auch ~500kB) schwankt der Abstand nicht besonders; für andere Input-Dateigrößen haben ich es noch nicht gemessen. Auch Benchmarks habe ich gerade nicht parat. Kannst du mir welche Empfehlen? Ansonsten könnte ich wohl auch einfach mal zufällige Testdaten erzeugen und in Arrays speichern und etwas rumrechnen lassen und dazu dann halt Zeit stoppen. Aber falls es fertige Benchmark-Tools gibt wäre ich sehr dankbar für eine Empfehlung. (Windows Leistungsindex zählt wohl nicht, den hätte ich parat^^)
 
Es kann ja sein, dass die JRE mit deinem Code auf dem Intelsystem irgendwelche tollen Optimierungen oder Befehlssätze ausführen kann, die dem Phenom nicht zur Verfügung stehen. Das ist aber reine Spekulation, da habe ich auch keine Ahnung von. Von der Rohleistung sollte der PhenomII mit 1GHz Taktvorteil jedenfalls nicht so krass hinterherhinken.
 
Du hast doch mit Sicherheit Tests implementiert, oder?
Dann benchmarke doch einfach mal und teste, welche Klassen/Objekte wie skallieren. Wenn du das parallel auf PC und Laptop machst, solltest du "sehen", welche Klasse/Objekt/Operation nun den Flaschenhals beinhaltet und dann kannst du ja nachschauen, was genau dort passiert, ob das nun Festplattenzugriffe sind, ob das eine Factory ist oder oder..
 
  • Thread Starter Thread Starter
  • #13
Sorry. Ich bin mit den Begriffen nur oberflächlich bekannt. Ich habe keine konkrete Vorstellung davon, was du als "Tests" bezeichnest. Ich habe auf jeden Fall keine Performancetests eingebaut. Ich kann höchstens Zeitstoppen nachträglich einbauen an interessanten Stellen und die Werte dann vergleichen. Oder meinst du vielleicht eher sowas wie jVisualvm - also den Profiler. Vielleicht kann man da auch schon was dran erkennen...
 
  • Thread Starter Thread Starter
  • #15
Danke für den Tipp. Mal gespannt...
 
Nur 500kB und dann mehrere Minuten? Was machst du denn mit den Daten? Ggf. kann man hier noch einiges optimieren.
 
Zurück
Oben