2017-05-05 3 views
0

hier ist mein Problem: ich zwei Klassen haben, grundlegende Vererbung:Java Unterklasse Konstruktor ausgeführt wurde viel länger

public class Foo1 { 
    long a; 
    double b; 
    String c; 

    Foo1(long a, double b) { 
     this.a = a; 
     this.b = b; 
    } 

    Foo1(long a, double b, String c) { 
     this(a, b); 
     this.c = c; 
    } 
    ... 
} 

public class Foo2 extends Foo1 { 
    Foo2(long a, double b) { 
     super(a, b); 
    } 

    Foo2(long a, double b, String c) { 
     super(a, b, c); 
    } 
    ... 
} 

Und jetzt: - Klasse Foo1 schafft normalerweise von beiden Konstrukteure, - Klasse foo2 schafft normalerweise von 2 argument constructor, aber im Falle von 3 argument constructor erstellt es merklich länger, zum Beispiel:

Erstellung (und andere Sachen gehen) von 6k Foo1 und 6k Foo2, mit 2 Argument Konstruktor dauert 2 min, und gleich Ding, 6k und 6k mit 3 Argument Contractor nimmt li ke 1 Stunde.

Ich bin 100% sicher, dass dieser Teil mein Programm verlangsamt, aber ich habe absolut keine Ahnung warum ... Irgendwelche Ideen?

+0

Vielleicht, weil Sie 6k Instanzen von String erstellen. long und double sind primitive Typen, während String ein Objekt ist. –

+0

* "Ich bin 100% sicher, dass dieser Teil mein Programm verlangsamt" * Wie hast du es gemessen? –

+2

Gut, um den Benchmark-Code zu zeigen. – rmuller

Antwort

4

Ich bin 100% sicher, dass dieser Teil meines Programms verlangsamt

Sie optimieren nicht auf einem „Ich bin sicher“ -Basis.

Benchmark-Anwendung mit einem Profiler, um den echten Engpass zu identifizieren.

+0

@RBT gibt es nicht viel mehr zu beantworten durch den aktuellen Stand der Frage ... –

+0

wahr, aber ich glaube, Ihre Post sollte ein Kommentar sein. Sie bitten das OP um mehr Klärung, indem Sie einen Profiler setzen. Ihr Vorschlag, einen Profiler zu verwenden, um die Problembereiche zu benchmarken, ist keine Lösung für die Frage von OP. – RBT

+0

@RBT Ich meine es nicht als "Anfrage für weitere Informationen" (was ich in Kommentaren getan habe), sondern als ein Vorschlag. Sicherlich ist es nicht die Antwort, die der OP erwartet haben könnte ... –

Verwandte Themen