Performancefrage int-Vector/Stack

Status
Nicht offen für weitere Antworten.

virtualAudio

Aktives Mitglied
Hi leute,

ich brauche einen Stack mit int Werten und frage mich gerade was am effizientesten ist.

Ein Vector(ohne generics weil ich mit Java1.4 programmieren muss) wäre eine Möglichkeit für den Stack, aber ich denke, dass ein int-Array vermutlich effizienter ist (nur Primitive). Vor allem weil es nicht sehr lang werden wird. Standardmäßig wird er wohl so bis 5Werte lang, vieleleicht kann es in irgendeiner sehr dummen Ausnahmesituation auch mal über 10 oder 15 steigen.

DIE FRAGE:
Geht es gegen die Performance wenn ich das Array zu anfang gleich 20 groß mache, oder ist es besser klein anzufangen (~10) und dann wenn nötig zu wachsen (zB immer um 5 größer werdend). Die paar byte Speicher sind egal.
Bzw. gibt es eine effizientere Variante für so einen int-Stack?

lg Andi
 

Marco13

Top Contributor
Ein Array ist im Vergleich zu einem Vector schon deutlich effizienter, insbesondere weil ein Vector synchronized ist, und man die ints ja per Hand in Intger-Objekte verwandeln müßte. Trotzdem solltest du in Erwägung ziehen, dir ein
Code:
interface IntStack
{
    void push(int n);
    int pop();
    int peek();
    ...
zu erstellen, das du dann wie gewünscht (und insbesondere mit Unterschiedlichem Verhalten beim Vergrößern/Verkleinern) implementieren kannst, wenn du feststellst, dass das das Bottleneck ist.

EDIT: Ach ja: DIE ANTWORT: Was heißt "geht es gegen die Performance"? Ob man auf einen Array mit 10 elementen oder einen mit 100 Elementen zugreift, ist egal. Ob man einen Array neu allokiert+umkopiert oder nicht, ist nicht egal.
 
B

bygones

Gast
warum sich die Muehe mit einem Array machen wenn man ArrayList hat... die is nix anderes als ein array.


ansonsten - bevor man anfaengt sich den Kopf zu zerbrechn was wohl wie am performantesten ist und dann anfaengt krude Sachen umzusetzen - VERGISS performance, sie ist in 99,999999% unwichtig und nur das denken darueber verschlimmert in 99,9999% der Faellen ein Programm
 

depood

Mitglied
ansonsten - bevor man anfaengt sich den Kopf zu zerbrechn was wohl wie am performantesten ist und dann anfaengt krude Sachen umzusetzen - VERGISS performance, sie ist in 99,999999% unwichtig und nur das denken darueber verschlimmert in 99,9999% der Faellen ein Programm

Lesbarkeit, Wiederverwendbarkeit, Erweiterbarkeit .... - Performance
 

virtualAudio

Aktives Mitglied
Danke für die schnellen Antworten!

Die Idee mit dem interface finde ich sehr gut!

@bygones: in meinem Fall geht es leider nur um Performance, sonst würde ich mir die Arbeit natürlich auch nicht antun. Es geht um 1000de Fälle, viele Instanzen nebeneinander und das ganze wird lange laufen...die Extraarbeit zahlt sich somit aus ;)

lg Andi
 
B

bygones

Gast
dennoch sag ich nochmal:

ohne wirklichen beweis einer Performanceeinbusse (profiler etc) wuerde ich mir um sowas keine Gedanken machen.

depood hat es nochmal richtig herausgestellt.


so nun genug warnungen - mach wie du es fuer richtig haeltst :)
 

miwoe

Mitglied
Lesbarkeit, Wiederverwendbarkeit, Erweiterbarkeit .... - Performance

Das denkt sich EA Games bestimmt auch.

Da geht es dann Lesbarkeit, Wiederverwendbarkeit, Erweiterbarkeit...., Performance, Korrektheit, Zuverlässigkeit. :D

Aber für die meisten typischen Java-Anwendungen, ist dies wohl korrekt.

Kennt einer eine gute Seite über Performance und Collections? Wer hätte es gedacht? Ich beschäftige mich gerade mit einer Applikation, welche möglichst hohe Response-Zeit haben soll....
 

hdi

Top Contributor
sie ist in 99,999999% unwichtig
Naja, mit den 9ern nach dem Komma übertreibst du es jetzt aber ;) Es stimmt dass Stabilität usw wichtiger sind als Performance, aber das kommt nur aus der Praxis, wo man immer Kompromisse machen muss (Zeit ist Geld). Aber Performance-Tuning grundlegend abzulehnen ist totaler Schwachsinn. Wenn dein Programm schneller laufen kann, als es das tut, dann sollte es das auch. Wie gesagt: Wenn du jetzt eine Gegenüberstellung hast von Performance und zB Code-Review für den Release, dann machst du natürlich den Review. Aber wenn das nicht der Fall ist, zB bei privaten Hobbyprojekten, ist es imho einfach nur dumm zu sagen "Performance ist egal". Es gibt noch immer Leute mit 3 Ghz Pentium 4 CPU's und 1GB 600er Ram. Du glaubst gar nicht wie scheiß langsam die Teile sind ;)

edit: Nicht dass sich einer angegriffen fühlt. Mit "dumm" meinte ich: Wenn man die Zeit hat, und bereit ist sie zu investieren, kann Performance-Tuning niemals schlecht sein. Natürlich muss man wissen, was man tut, also auch nach jedem Step prüfen ob sich irgendwo ein Fehler eingeschlichen hat.
 
Zuletzt bearbeitet:
B

bygones

Gast
hdi:

Das problem ist einfach dass aus allgemeiner Erfahrung man immer meint "mein programm muss performanter sein" (meint - nicht weiss...) - dann faengt man an wilde Performanceoptimierungen zu machen und ist danach moeglicherweise sogar 2ms schneller hat aber ein Programm das man nicht mehr anschauen will und kann.

Die ueblichen Zitate ueber "optimieren" und "premature optimization" lass ich jetzt mal weg
 
M

maki

Gast
edit: Nicht dass sich einer angegriffen fühlt. Mit "dumm" meinte ich: Wenn man die Zeit hat, und bereit ist sie zu investieren, kann Performance-Tuning niemals schlecht sein. Natürlich muss man wissen, was man tut, also auch nach jedem Step prüfen ob sich irgendwo ein Fehler eingeschlichen hat.
Doch doch, Performance Tuning kann sogar sehr schlecht & dumm sein.
So wie es die meisten Anfänger betrieben, nämlich ohne Profiler zu verwenden, ist es gar keine Optimierung, sondern nur eine Code Verschlechterung.
Bevor man keine Performanceprobleme hat, ignoriert man sie :)
Ein Programm mit sauberer Struktur/Code lässt sich nötigenfalls immer optimieren, eine "schnelles" Programm zu strukturieren bzw. den Code aufzuräumen ist dagegen sehr sehr schwer, läuft meist auf eine Re-Implementierung hinaus.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Performancefrage zu "else if" und "||" Allgemeine Java-Themen 10
A Performancefrage Allgemeine Java-Themen 24
A Vector Strings in Array splitten Allgemeine Java-Themen 6
G Fehler mit Vector Allgemeine Java-Themen 3
M String Array Vector komprimieren und verschicken Allgemeine Java-Themen 3
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
U Vector aus Oberklasse spezialisieren Allgemeine Java-Themen 2
R Vector in JList Allgemeine Java-Themen 11
M Cast double[]-->Object[] oder Vector<double[]> Allgemeine Java-Themen 3
R Threads korrekte Synchronisation bei Vector und ArrayList Allgemeine Java-Themen 6
H Index Out of Bounds bei Vector Allgemeine Java-Themen 4
H Java Vector Frage Allgemeine Java-Themen 9
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
C Vector/Point-Problem Allgemeine Java-Themen 3
M Buffer-Vector einzeln und zusammen synchronisieren Allgemeine Java-Themen 4
B Suchalgorithmus der Klasse Vector Allgemeine Java-Themen 5
X Vector Allgemeine Java-Themen 3
S 2D Vector speziell ausgeben. Allgemeine Java-Themen 2
S Vector in Vector gespeichert, wie greift man darauf zu? Allgemeine Java-Themen 3
C Swing JTable Vector aus DB adden Allgemeine Java-Themen 3
R Vector.clear() oder neu initialisieren Allgemeine Java-Themen 3
S vector & strings Allgemeine Java-Themen 26
X Vector in Intervall-Menge umwandeln Allgemeine Java-Themen 4
D Array oder Vector in Enum Deklarieren Allgemeine Java-Themen 3
J Erweiterte For-Schleife mit Vector Allgemeine Java-Themen 5
G JComponent in Vector - wie klonen? Allgemeine Java-Themen 7
N HashMap<String,Vector<String>> a = new HashMap<String,Vector<String>>(); Allgemeine Java-Themen 4
H GUI: RectangleDrawer - zu viele Elemente im Vector für die paint-Methode Allgemeine Java-Themen 6
S JList in Vector Allgemeine Java-Themen 3
I Vector mit Objekten sortieren,Videos mit JMF wiedergeben Allgemeine Java-Themen 6
MQue Vector<..> nicht verwenden Allgemeine Java-Themen 4
H Vector<Character> zu char[] castern Allgemeine Java-Themen 2
T Element aus Vector entfernen Allgemeine Java-Themen 4
Spot84 Vector nach Ressourcetyp sortieren Allgemeine Java-Themen 4
M get Funktion von Vector Allgemeine Java-Themen 4
N wie greife ich auf hashmap in vector zu Allgemeine Java-Themen 9
V NullPointerException bei Vector Allgemeine Java-Themen 2
E einfache Frage zu Vector Allgemeine Java-Themen 8
K Serialisierung von Hashmap in Vector Allgemeine Java-Themen 3
G Vector beim Initialisieren befüllen Allgemeine Java-Themen 4
G Vector addAll Allgemeine Java-Themen 5
B sorteiren von Datein nach Zeitstempel in einem Vector Allgemeine Java-Themen 5
W [solved] Vector sortieren (Collection / Comparable?) Allgemeine Java-Themen 7
MQue Vector Allgemeine Java-Themen 7
F Vector in eine Datenbank speichern? Allgemeine Java-Themen 3
P Vector auf JTree Allgemeine Java-Themen 6
P dynamisches Array / Vector Allgemeine Java-Themen 2
P JTable/Vector Allgemeine Java-Themen 5
T Vector und remove? Allgemeine Java-Themen 13
T Vector in JAVA ? Allgemeine Java-Themen 10
P Vector in vielen Klassen Allgemeine Java-Themen 21
MQue Vector implementieren Allgemeine Java-Themen 2
MQue Vector<State> Allgemeine Java-Themen 2
O hilfe bei Vector frage Allgemeine Java-Themen 6
F Synchronisation + Vector/ArrayList/LinkedList Allgemeine Java-Themen 7
Z Elemente in Vector nach Häufigkeit sortieren. Allgemeine Java-Themen 13
H java.util.Vector langsam ? Allgemeine Java-Themen 5
H Vector<T>[] vecs = new Vector<T>[10]; geht nicht Allgemeine Java-Themen 2
N Java API java.util.vector Allgemeine Java-Themen 3
G Vector erweitern Allgemeine Java-Themen 4
S Vector sortieren nach Objekt-Info? Allgemeine Java-Themen 9
A Probleme mit Vector Allgemeine Java-Themen 6
M Vergleich im geordeten Vector und Methodenaufruf Allgemeine Java-Themen 2
J Vector - Wert ersetzen Allgemeine Java-Themen 14
J Vector - Boolean Allgemeine Java-Themen 24
M Vector zu einem byte[] Allgemeine Java-Themen 5
J Vector<Shape> Speichern [gelöst] Allgemeine Java-Themen 11
Y Array mit ID in Vector Allgemeine Java-Themen 6
T Vector <-> double Allgemeine Java-Themen 4
T ArrayList bzw. Vector per set-Methode? Allgemeine Java-Themen 3
T ArrayList oder Vector als Parameter? Allgemeine Java-Themen 7
M Vector add() unchecked? Allgemeine Java-Themen 5
M Probleme und Zeitdruck: Kunden-DB (Vector) Allgemeine Java-Themen 13
T Vector Array Allgemeine Java-Themen 5
M Kunden-DB mit Vector Allgemeine Java-Themen 9
J Vector sortieren Allgemeine Java-Themen 3
M Vector - contain Allgemeine Java-Themen 13
C String und char[] / String[] und Vector Allgemeine Java-Themen 21
N Vector -> 2Diminsonaler Array Allgemeine Java-Themen 10
N Alledateien in einem Ordner in ein Vector speichern Allgemeine Java-Themen 19
K Object nach Vector konvertieren Allgemeine Java-Themen 3
Z ResultSet in Array oder Vector schreiben! Allgemeine Java-Themen 2
C vector von vector sortieren Allgemeine Java-Themen 4
D Vector in String Allgemeine Java-Themen 5
J Von Collection zu vector Allgemeine Java-Themen 5
D Vector in Datei schreiben Allgemeine Java-Themen 18
I Vector serialisieren: StackOverflow Allgemeine Java-Themen 13
H Vector in ein File-Array umwandeln Allgemeine Java-Themen 2
J User Klasse in den Vector, Object Klasse wieder raus... Allgemeine Java-Themen 4
K vector, synchronized und mehrere methoden Allgemeine Java-Themen 3
berserkerdq2 IJVM, ich tue auf meinen Stack 100 und 120 rein, danach subtrahiere ich, macht die Maschine 100-120 oder 120-100? Allgemeine Java-Themen 8
berserkerdq2 Kann man in IJVM maximal 3 Werte im Stack haben? Allgemeine Java-Themen 3
M Stack umdrehen Allgemeine Java-Themen 2
H Stack mit bestimmter Aufgabe Allgemeine Java-Themen 62
L Stack overflow bei einer endrekursiven Funktion (Anwendung: Spezialform des Package Merge) Allgemeine Java-Themen 4
S Collections Stack-Kapazität begrenzen Allgemeine Java-Themen 6
C Method Area, Stack, Heap Allgemeine Java-Themen 7
F Mehrere Threads - ein Stack Allgemeine Java-Themen 6
M Baum nach Stack plus Objektkonvertierung Allgemeine Java-Themen 5
X Wie 'teuer' ist die Verwendung des Stack Trace ? Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben