Um wieviel ist Swing langsamer als AWT?



  • man hört ja immer, daß swing langsamer ist als awt. in welchem rahmen spielt sich das ab? ist swing um 10% oder gar mehr langsamer, oder sind da nur wenige prozent dazwischen?



  • 35 %



  • und warum soll man dann swing statt awt verwenden? 35 prozent sind viel!



  • ob das öffnen eines Menüs nun 0.1 oder 0.135 Sekunden dauert macht keinen Unterschied.
    Ausserdem sind es bei der neuesten Java Version nur noch 27,34675%.


  • Mod

    DrZoidberg schrieb:

    Ausserdem sind es bei der neuesten Java Version nur noch 27,34675%.

    Mist, den wollte ich eben auch schon bringen, du bist mir zuvorgekommen. 😃



  • wo habt ihr den die werte her? - klingt ja einmal vernuenftig

    macht eigentlich irgendwer was mit SWT und weiss wie die geschwindigkeit da aussieht - hoer immer durch das native/byte code mischkonzept wuerde es sehr schnell laufen

    PS: gefuehlsmaessig kommt es einem allerdings immer wesentlich langsamer vor 🙂



  • gomberl schrieb:

    wo habt ihr den die werte her?

    /dev/random mit ein bisschen runden.



  • Echt krass das geflame hier. 😃 Konnte mein Lachen nicht mehr verkneifen.



  • Ich hab noch ein bisschen was optimizert und komme jetzt auf 26,88752%.



  • Optimizer schrieb:

    Ich hab noch ein bisschen was optimizert und komme jetzt auf 26,88752%.

    😮 ........................ 😉


  • Mod

    Helium not logged in schrieb:

    35 %

    DrZoidberg schrieb:

    bei der neuesten Java Version nur noch 27,34675%

    Optimizer schrieb:

    und komme jetzt auf 26,88752%

    Ha, ihr LoOs0Rzz habt ja keine Ahnung. Mein Benchmark...

    import java.awt.*;
    import javax.swing.*;
    
    public class DaBenchmark
    {
       public static void main (String[] args)
       {
          long awtTime = 0;
          long swingTime = 0;
          for (int i = 0 ; i < 1000 ; ++i)
          {
             long time = System.nanoTime();
             Frame frame = new Frame();
             frame.setVisible(true);
             frame.dispose();
             awtTime += System.nanoTime() - time;
    
             time = System.nanoTime();
             JFrame jframe = new JFrame();
             jframe.setVisible(true);
             jframe.dispose();
             swingTime += System.nanoTime() - time;
          }
          System.out.println("AWT-Time : " + awtTime);
          System.out.println("Swing-Time : " + swingTime);
          System.out.println("AWT ist um " + (100.0 * (1.0 - ((double)awtTime / (double)swingTime))) + 
                             " % schneller!!!11");
       }
    }
    

    Output:

    AWT-Time : 20396585000
    Swing-Time : 23545239000
    AWT ist um 13.3727841964144 % schneller!!!11
    

    ...hat zweifelsfrei ergeben, dass AWT genau 13.3727841964144% schneller als Swing ist. 😮 😮 ...oh man! Ich bin echt nur von imkompetenten Leuten umgeben! 😮 😃 😉



  • Gregor muss ein völlig anderes Design benutzen. Jetzt ist Industriespionage angesagt, bevor er daraus auch noch einen öffentlichen Standard macht. 😉



  • DaBenchmark

    !!!11

    unseriös



  • phi schrieb:

    DaBenchmark

    !!!11

    unseriös

    Aber sehr l337 👍 😃


  • Mod

    phi schrieb:

    DaBenchmark

    !!!11

    unseriös

    👍 Für diese begründete Kritik möchte ich mich ganz herzlich bei dir bedanken. Seit ich diesem Link über Erfolgsintelligenz von diesem Forum aus gefolgt bin, weiß ich nämlich, dass...

    Menschen mit Erfolgsintelligenz akzeptieren berechtigte Kritik.

    Selbstverständlich habe ich deine Kritik zum Anlass genommen, meine Fehler zu korrigieren. Hier ist die erneuerte und nun vollkommen seriöse Version meines Benchmarks:

    import java.awt.*;
    import javax.swing.*;
    
    public class Benchmark
    {
       public static void main (String[] args)
       {
          long awtTime = 0;
          long swingTime = 0;
          for (int i = 0 ; i < 1000 ; ++i)
          {
             long time = System.nanoTime();
             Frame frame = new Frame();
             frame.setVisible(true);
             frame.dispose();
             awtTime += System.nanoTime() - time;
    
             time = System.nanoTime();
             JFrame jframe = new JFrame();
             jframe.setVisible(true);
             jframe.dispose();
             swingTime += System.nanoTime() - time;
          }
          System.out.println("AWT-Time : " + awtTime);
          System.out.println("Swing-Time : " + swingTime);
          System.out.println("AWT ist um " + (100.0 * (1.0 - ((double)awtTime / (double)swingTime))) + 
                             " % schneller.");
       }
    }
    

    Output:

    AWT-Time : 21615494000
    Swing-Time : 24512658000
    AWT ist um 11.819052833846088 % schneller.
    

    Wie du sehen kannst, hat die Änderung am Benchmark tatsächlich das Ergebnis beeinflußt. 😮 AWT ist also in Wirklichkeit nur 11.819052833846088% schneller als Swing, wie mein neuer, vollkommen seriöser Benchmark nun zweifelsfrei gezeigt hat.

    Auf bald,

    euer erfolgsintelligenter Gregor. 😃



  • Hi Gregor,
    welches JDK hast du? Mit JDK 1.5 RC kommt bei mir folgendes:

    AWT-Time : 24804649726
    Swing-Time : 25344490457
    AWT ist um 2.1300121693742624 % schneller.

    Liebe Grüße
    Real


  • Mod

    Real schrieb:

    Hi Gregor,
    welches JDK hast du? Mit JDK 1.5 RC kommt bei mir folgendes:

    AWT-Time : 24804649726
    Swing-Time : 25344490457
    AWT ist um 2.1300121693742624 % schneller.

    Das liegt daran, dass du Windows nutzt. Da sind die nativen GUI-Komponenten einfach lahm. Wechsel doch einfach mal auf ein echtes OS, wie das gute Linux. 🕶 😃 😉



  • Hmm, also ich musste immer wieder feststellen, dass Linux sehr lahm ist und ich habe schon einige Distributionen ausprobiert. Und ziemlich buggy sind sie auch.

    Zeta hat mich sehr begeistert und ich bin schon auf die Final gespannt und auf die weitere Entwicklung. Dort klickst du auf ein Programm und im nächsten Moment ist es geöffnet, auch Programme wie Mozilla Firefox oder VLC die normalerweise etwas Zeitanspruch an sich nehmen. Und wenn ich Windows-Partitionen mounten will, mach ich das auch mit 2 Klicks, ohne einen Samba-Server installieren und konfigurieren zu müssen.

    Liebe Grüße
    Real



  • Gregor schrieb:

    Real schrieb:

    Hi Gregor,
    welches JDK hast du? Mit JDK 1.5 RC kommt bei mir folgendes:

    AWT-Time : 24804649726
    Swing-Time : 25344490457
    AWT ist um 2.1300121693742624 % schneller.

    Das liegt daran, dass du Windows nutzt. Da sind die nativen GUI-Komponenten einfach lahm. Wechsel doch einfach mal auf ein echtes OS, wie das gute Linux. 🕶 😃 😉

    Ich glaube eher, dass die Implementierung der Graphics2D-API unter Windows deutlich schneller ist, wahrscheinlich sogar einfach die GDI schneller ist als die korrespondierende Linux-Lib.



  • Hi,

    hab versucht zu kompelieren aber nanoTime(), kennt der Compiler nicht?

    Was mach da falsch?


Log in to reply