![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.627
|
Hallo,
ich habe eine Frage zur Performance und dem Singleton Design Pattern. Ich habe mal irgendwo (in irgendeinem Thread, Forum weiß ich nicht mehr) gelesen, dass es teilweise gefährlich sein kann, Singletons zu verwenden, da so Engpässe entstehen können oder so in der Art :roll. Meine Frage ist nun .. was ist an dem Gerücht dran? Es geht mir dabei um Pageimpressions in den hohen Hundertausendern pro Tag, falls das helfen sollte. Ich dachte an Singletons für die Authentifikations- und Session-Klasse. Wie sind Eure Erfahrungen dazu? Danke Euch. Grüße, Ben. |
|
|
|
|
|
Nach oben #4 |
|
BIN EIN KRASSA HELD!!!111
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.174
|
-> http://de.wikipedia.org/wiki/Einzels...wurfsmuster%29
// edit *grrr* da postet jemand in der gleichen minute wie ich, geht doch mal ned |
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 756
|
Eines der GoF-Patterns. Von der Klasse existiert maximal eine Instanz un kann von überall her eingebunden werden:
PHP-Code:
Basti |
|
|
|
|
|
Nach oben #6 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 617
|
Äh ja, gut, äh.... Toll, diese Technik habe ich schon vor 2 Jahren angewandt, nur wusste ich nicht, dass es so heißt *gg* Wie doof
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #7 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 756
|
Drum ist`s sicher nicht schlecht, sich mit den Entwurfsmustern zu befassen. Dann reicht einfach oft ein Wort und alle wissen, was gemeint ist, anstatt erstmal groß erklären zu müssen, wie man etwas umgesetzt hat oder umsetzen will.
Basti |
|
|
|
|
|
Nach oben #8 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 617
|
@Basti: Mag ja sein, aber wenn du danach gehst, müsste ich fast meine komplette Freizeit, die ich momentan zum Programmieren nutzen kann für die Weiterbildung in der Programmierer-Theorie aufwenden, was dann dazu führen würde, dass ich nurnoch theoretisch programmieren würde.
Naja, wie auch immer
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #10 |
|
Erfahrener Benutzer
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 168
|
Ich vermute mal das es nicht stimmt. Ich meine es macht jetzt kein Unterschied, ob ich eine Instanz einer Klasse mittels dem Schlüsselwort global, oder mittels dem Singelton-Muster ansprechen kann. Letztenendes ist doch die Instanz der Klasse die gleiche, egal ob sie nun in einer Klasse als eine Klassenvariable oder im Globalen-Bereich als "normale" Variable existiert. Oder liege ich mit meiner Vermutung falsch |
|
|
|
|
|
Nach oben #11 |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.720
|
Ich glaube es ging eher darum, ob Singeltons generell Performant sind. Egal wie sie aufgerufen werden, oder ob es eher sinnvoll ist, eine neue Instanz zu erzeugen anstelle die alte aufzurufen.
Ich würde hier davon ausgehen, dass es weniger um performance als um speicherbedarf geht. denn du müsstest sichergehen, dass alte instanzen gelöscht werden, da sonst die Klasse 5 mal neu instanziert wird ohne das es jemals sinn gemacht hat, weil nie mehr als eine benutzt wird. Ich verwende generell Singletons, wenn ich weiß, dass ich nie zeitgleich 2 Instanzen davon brauch. Dazu gehören z.B. Session- und Userverwaltungsklassen.
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
Nach oben #12 | ||
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.627
|
Hm, okay.
Wenn es keine grundlegenden Nachteile gibt .. werde ich die wohl verwenden. Zitat:
Zitat:
Morgen, Benni. |
||
|
|
|
|
|
Nach oben #13 | ||
|
Erfahrener Benutzer
Registriert seit: 05.01.2006
Ort: Düsseldorf
Beiträge: 168
|
Zitat:
XDegub oder APD empfehlen. Was auf jedenfall bei der Verwendung der Sessions wichtig ist, ist die Einstellung der session.save_path Direktive. Bei mehreren 1000 aufrufen pro Tag sollte man die Option "N" mit in erwegung ziehen. Hier ein Auschnitt aus php.ini Zitat:
Dies sind alles Tips aus dem Slide PHP & Performance von Ilia Alshanetsky aus der Zend Conference. Hier sind noch einige ebenfalls interessante Slides:
hat. Jedoch, geht es hier auch um Prefomence und wie man dies in weitesten Sinne testen kann (hoffe zumindest das es so ist |
||
|
|
|
|
|
Nach oben #15 | ||
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.720
|
Zitat:
__________________
I did it my way - Senseless-Blog |
||
|
|
|
|
|
Nach oben #16 |
|
Erfahrener Benutzer
Registriert seit: 18.08.2005
Beiträge: 108
|
Ob Singletons Performanceprobleme dürfte hochgradig kontext- und architekturabhängig sein.
In einer Java-Anwendung mit vielen Threads müsste z.B. immer am Singleton synchronisiert werden, da muss man schon drüber nachdenken, ob das die richtige Stelle dafür ist. Wenn man Anwendungen in die Breite skalieren will (viele Server, viele Prozessoren) hat PHP vorgemacht, dass share-nothing-Architekturen vorteilhaft sind, und das Prinzip von Singletons ist nunmal das gemeinsame Nutzen von Ressourcen. |
|
|
|
|
|
Nach oben #17 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.627
|
Hi Waq,
das klingt jetzt ja eher so, als ob ich die Finger davon lassen sollte. Zitat:
Danke. Grüße, Ben. |
|
|
|
|