![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
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 |
| Benjamin Steininger Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
|
-> 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 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
Eines der GoF-Patterns. Von der Klasse existiert maximal eine Instanz un kann von überall her eingebunden werden: PHP-Code: Basti |
| | |
| | Nach oben #6 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
Ä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 |
| Bastian Fenske Registriert seit: 04.01.2006 Ort: Kassel
Beiträge: 826
|
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 |
| Lutz Registriert seit: 14.08.2005 Ort: Nienburg / Weser
Beiträge: 684
|
@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 |
| Dejan Spasic Registriert seit: 05.01.2006 Ort: Düsseldorf
Beiträge: 169
| 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 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
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 | ||
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
Hm, okay. Wenn es keine grundlegenden Nachteile gibt .. werde ich die wohl verwenden. Zitat:
Zitat:
Morgen, Benni. | ||
| | |
| | Nach oben #13 | ||
| Dejan Spasic Registriert seit: 05.01.2006 Ort: Düsseldorf
Beiträge: 169
| 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 | ||
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
| 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 | |
| Benjamin Klaile Registriert seit: 02.12.2004 Ort: Remagen
Beiträge: 4.480
|
Hi Waq, das klingt jetzt ja eher so, als ob ich die Finger davon lassen sollte. Zitat:
Danke. Grüße, Ben. | |
| | |
| | Nach oben #18 |
| Gast
Beiträge: n/a
|
den blick auf http://en.wikipedia.org/wiki/Singlet...External_links nicht vergessen * singleton considered stupid * singletons cause cancer * use your singletons wisely summieren nochmal auf, warum singletons ein problem sein können. man kann, anstatt wie wild singletons zu basteln, die selbe instanz eines objekts einfach als parameter weitergeben, und hat im prinzip den selben effekt. singletons sind wirklich nur in besonderen ausnahmefällen sinnvoll, und dann sollte man auch darauf achten, den aufruf meineKlasse::getInstance() so selten wie möglich zu benötigen, sonst kommt man in des teufels küche damit. grüße axo |
|
| | Nach oben #20 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.110
|
Da möchte ich aber widersprechen. Zum einen wäre es damit notwendig, alle Singletons als Parameter an anderen Klassen/Funktionen zu übergeben, weil man nie wissen kann, ob nach ner Änderungen weiter unten in der Hierarchie nicht doch die Instanz benötigt wird, zum anderen ist der Aufruf einer getInstance-Methode mit Sicherheit nicht in einem relevanten Rahmen aufwendig. Wenn es von einem Objekt nur eine Instanz geben soll und darf, dann hat das nunmal ein Singleton zu sein. Andernfalls kommst du in Teufels Küche, weil du dann n Objekte mit unterschiedlichem State haben könntest, weil du ab und an mal ne neue Instanz erzeugt hast (warum auch nicht? verbietet dir ja niemand durch nen private Konstruktor und wenn doch ist es ja wieder ein Singleton...). |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| PEAR-Benchmark nutzen um Performance einer Template-Engine zu messen | Ben | PEAR, PECL und Frameworks | 9 | 26.02.2007 22:16 |
| getimagesize und Performance ? | CIX88 | PHP-Programmierung | 6 | 04.05.2006 08:28 |
| [FRAGE] performance von phptags | J33d3X | PHP-Programmierung | 14 | 30.01.2006 14:52 |
| Performance erhöhen | Steve231 | Datenbanken | 5 | 18.10.2005 16:39 |