String vs. StringBuffer!!!



  • destruct0r schrieb:

    aber bei Methoden soll es das Gegenteil bewirken, nämlich Perfomanceverlust
    

    Das verstehe ich jetzt nicht ganz - was meinst du damit?

    Wenn in einer Klasse mehrere Methoden auf eine Variable zugreifen und das multithreaded geschieht, muss man die Methoden synchronisieren, die auf dieselbe Variable zugreifen. Damit bewrikt man, dass nur eine Methode gleichzeitig auf die Variable zugreift.

    Wenn man jedoch unnötig Methoden synchronisiert (z.B. wenn keine andere Methode auf dieselbe Variable zugreift), dann geht es mit der Perfomance nach unten.

    Liebe Grüße
    Real



  • Real schrieb:

    destruct0r schrieb:

    aber bei Methoden soll es das Gegenteil bewirken, nämlich Perfomanceverlust
    

    Das verstehe ich jetzt nicht ganz - was meinst du damit?

    Wenn in einer Klasse mehrere Methoden auf eine Variable zugreifen und das multithreaded geschieht, muss man die Methoden synchronisieren, die auf dieselbe Variable zugreifen.

    Man MUSS garnichts, und wenn die Threads nur lesend zugreifen macht die Synchronisierung auch keinen Sinn.



  • Ja, natürlich nur, wenn man die Variable verändert.

    Liebe Grüße
    Reality



  • interpreter schrieb:

    Man MUSS garnichts, und wenn die Threads nur lesend zugreifen macht die Synchronisierung auch keinen Sinn.

    Leider auch nicht immer richtig.

    Wenn ich eine komplexe Datenstruktur unsynchronisiert auslese, kann sie sich während dem auslesen verändern.
    Das kann durchaus auch ungewünscht sein.

    z.B. möchte ich eine Kopie erstellen, aber am Ende ist sie weder vom alten Zustand eine Kopie noch vom neuen, sondern hat von beiden etwas.



  • Wenn in einer Klasse mehrere Methoden auf eine Variable zugreifen und das multithreaded geschieht, muss man die Methoden synchronisieren, die auf dieselbe Variable zugreifen. Damit bewrikt man, dass nur eine Methode gleichzeitig auf die Variable zugreift.

    Wenn man jedoch unnötig Methoden synchronisiert (z.B. wenn keine andere Methode auf dieselbe Variable zugreift), dann geht es mit der Perfomance nach unten.

    Das hat jettz aber nichts damit zu tun, was ich gepostet habe.

    Ja - wenn man eine Methode synchronosiert, dann wird die Ausführung etwas langsamer - ich habe jetzt aber beschrieben, wie man diesen Effekt eben in gewissen Situationen 'aufheben' kann.



  • Optimizer schrieb:

    interpreter schrieb:

    Man MUSS garnichts, und wenn die Threads nur lesend zugreifen macht die Synchronisierung auch keinen Sinn.

    Leider auch nicht immer richtig.

    Wenn ich eine komplexe Datenstruktur unsynchronisiert auslese, kann sie sich während dem auslesen verändern.
    Das kann durchaus auch ungewünscht sein.

    z.B. möchte ich eine Kopie erstellen, aber am Ende ist sie weder vom alten Zustand eine Kopie noch vom neuen, sondern hat von beiden etwas.

    Öhhh... aber dazu müsste man ja SCHREIBEND zugreifen...?!?



  • Wenn ich eine Kopie von etwas erstelle? Dazu muss ich nur dieses etwas auslesen.



  • Optimizer schrieb:

    Wenn ich eine Kopie von etwas erstelle? Dazu muss ich nur dieses etwas auslesen.

    Aber wenn die Kopie keine Kopie ist (weil zwischendurch der Zustand geändert wurde) wie Du sagst - dann wurde dort irgendwann dazwischen mal SCHREIBEND zugegriffen... 🤡



  • Ja, von einem anderem Thread aus. Deshalb ist es evtl. auch sinnvoll, das Auslesen zu synchronisieren. Darum geht es ja.



  • Optimizer schrieb:

    Ja, von einem anderem Thread aus. Deshalb ist es evtl. auch sinnvoll, das Auslesen zu synchronisieren. Darum geht es ja.

    😕 😕 😕

    Ich glaube wir reden aneinander vorbei... 🙄

    Ich zitiere Dich nochmal...

    Optimizer schrieb:

    interpreter schrieb:

    Man MUSS garnichts, und wenn die Threads nur lesend zugreifen macht die Synchronisierung auch keinen Sinn.

    Leider auch nicht immer richtig.

    Also dann... jetzt erklär' mal...! 🤡



  • ok, jetzt versteh ich... wenn alle Threads nur lesend zugreifen, geht es natürlich ohne sync. 🙄

    blablabla 😉 🤡

    btw. noch ein Grund mehr für immutable classes. 🙂



  • Optimizer schrieb:

    ok, jetzt versteh ich... wenn alle Threads nur lesend zugreifen, geht es natürlich ohne sync. 🙄

    Nichts anderes habe ich geschrieben.
    ⚠ Erst denken, dann posten. 😉



  • Quatsch!
    interpreter meinte in Wirklichkeit, wenn 7 von 10 Threads lesend, und 2 schreibend zugreifen... 🙄 *SCNR* 😃 👍



  • Sgt. Nukem schrieb:

    Quatsch!
    interpreter meinte in Wirklichkeit, wenn 7 von 10 Threads lesend, und 2 schreibend zugreifen... 🙄 *SCNR* 😃 👍

    Bist du ein X-Men? 🤡

    BTW: Und was macht der 10. Thread? 😉


Anmelden zum Antworten