Schrift
[thread]10776[/thread]

Objekt löschen (Seite 2)

Tags: Ähnliche Threads

Leser: 2


<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
Struppi
 2007-11-13 04:02
#102324 #102324
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Froschpopo+2007-11-12 20:36:52--
also bei meiner Community wo oftmals viele Requests in sehr kurzem Zeitrahm stattfinden hängt er schon manchmal für eine halbe Sekunde fest weil z.B. der Vorrat an preforks leer geht und er mit dem neu erstellen nicht hinterherkommt.
Deshalb muss ich an jeder Ecke sparen und soviel wie möglich in Module auslagern.

bei der undef-Variante täte mich aber noch interessieren, ob das nur die Löschung des Objekts zur Folge hat, oder ob dann auch z.B. $self vollständig gereinigt bzw. wird.
wie schon gesagt, wenn du nicht riesige Datenmenge im Speicher hast spielt "ein Objekt" mehr oder weniger im Speicher keine Rolle. Du wirst durch das löschen keinen Geschwindigkeitsvorteil bekommen.

Wenn du wirklich dein Perl Programm optimieren wilst, schau dir mal an was andere empfehlen http://www.google.de/search?q=perl+performance
soweit ich das sehe, empfiehlt niemand delete

[EDIT]Link korrigiert.
pq
 2007-11-13 11:02
#102328 #102328
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
Struppi+2007-11-13 03:02:26--
Wenn du wirklich dein Perl Programm optimieren wilst, schau dir mal an was andere empfehlen http://www.google.de/search?num=20&hl=de&ie=UTF-8&...
soweit ich das sehe, empfiehlt niemand delete

estens funktioniert der link irgendwie nicht und zweitens ist es auch kein wunder, dass bei
der suche nach perl und performance kein hinweis auf undef() auftaucht (ich vermute, du
meintest undef und nicht delete, denn delete ist eine ganz andere funktion).
es ging doch in der originalfrage nicht um performance, sondern um speichersparen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Struppi
 2007-11-13 11:23
#102330 #102330
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Daher habe ich auch Froschpopos Satz zitiert.
Und das der Link nicht geht liegt nicht an mir, sondern am automatischen Umwandeln des Forums (oder etwas anderem, die URL war so im Browser). Aber jetzt nochmal geprüft: http://www.google.de/search?q=perl+performance

Wobei ich aber es auch für fragwürdig halte Speicher sparen zu wollen durch das manuelle löschen von Objekten (ausser, wie schon erwähnt, wenn ein Modul mehrere MB Daten einliest).

[EDIT]oops, stimmt da hab ich schlampig formuliert, ich meinte natürlich auch nicht den Befehl delete, da die meisten Perfomance Artikel in Englisch sind, die ich überflogen hatte, war ich so drin, dass ich damit meinte das löschen von Objekten.
Struppi
 2007-11-13 14:44
#102348 #102348
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
So, ich hab jetzt auch mal nach Seiten gesucht wo Perl und Speicher sparen thematisiert wird. Ich kann nirgends einen Hinweis finden das es sich lohnt zur Laufzeit manuell mit undef Objekte aus dem Speicher zu holen. Dafür umso häufiger den Hinweis, das man bevor man anfängt wahlos zu "optimieren" erstmal mißt was und wo ein Nadelöhr ist, also in dem Falle ob es tatsächlich an zu wenig Speicher liegt.
renee
 2007-11-13 14:48
#102350 #102350
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Struppi+2007-11-13 13:44:36--
So, ich hab jetzt auch mal nach Seiten gesucht wo Perl und Speicher sparen thematisiert wird. Ich kann nirgends einen Hinweis finden das es sich lohnt zur Laufzeit manuell mit undef Objekte aus dem Speicher zu holen.


Pauschal kann man so etwas sowieso nicht sagen. pq hat ja ein Beispiel gezeigt, wo es sich lohnen kann und wo nicht.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Struppi
 2007-11-13 16:00
#102358 #102358
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Naja, das Beispiel zeigt nur wie man es macht, wenn es sich lohnen würde. Ich habe bisher noch nie undef benutzt, weil ich Speicher sparen wollte. Sowas verzögert ja eher den Programmfluss und ich hatte bisher eher Probleme mit der Laufzeit.
sid burn
 2007-11-13 16:20
#102364 #102364
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Dann möchtest du wahrscheinlich einen profiler benutzen.

Wenn du dein Programm zum Beispiel mit "perl -d:DProf ./Programm" startest dann läuft dein Programm normal weiter aber es wird noch eine "tmon.out" Datei erstellt.

Die Informationen dieser Datei kannst du dann mit "dprofpp" anzeigen lassen.

Dort steht dann drin welche Subroutine am meisten aufgerufen wurde, wie lange das Programm in einer bestimmten Subroutine verbracht hat etc.

Mit diesen Informationen kannst dann gezielt schauen wo eine Optimierung am meisten etwas bringt.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Struppi
 2007-11-14 02:48
#102386 #102386
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Ich sowieso nicht ich hab den Thread nicht angeworfen - aber genau das würde ich machen, aber der OP geht von Speicherproblemen aus.
ptk
 2007-11-14 02:57
#102387 #102387
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wenn der OP mod_perl verwendet, dann hat er auf jeden Fall Speicherprobleme.
Struppi
 2007-11-14 12:36
#102397 #102397
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Ich hab noch nie mit mod_perl gearbeitet, aber das klingt als ob du von mod_perl abrätst?

Aber soweit ich das verstehe, ist unter mod_perl eher das Problem, dass alle Module die geladen wurden, im Speicher gehalten werden und wenn wir mal wieder auf den Ausgangspunkt zurück kommen, war die Frage:
Quote
Ich dachte mir, wenn ich z.B. $self lösche, dann könnte man etwas Speicher frei machen. Bei mir wird nämlich das Objekt meistens schon kurz nach Programmstart erstellt und bleibt ja dann logischerweise bis Programmende erhalten. Aber was ist, wenn ich das Objekt schon vorher seinen Zweck erfüllt hat und ich es plötzlich nicht mehr benötige?

Das klingt einerseits nach einem globalen Objekt. Ist es unter mod_perl nicht sinnvoll dieses im Speicher zu halten, bzw. ist das nicht der Vorteil von mod_perl, das eben nicht immer alles neu geladen wird?

Gleichzeitig klingt das aber wieder nicht nach einem globalen Objekt (wg. $self) und dann wird es sowieso automatisch "gelöscht" (gelöscht stimmt ja nur bedingt) wenn es nicht mehr benötigt wird.

Mir stellt sich die Frage, warum es sinnvoll sein soll ein Objekt von Hand zu löschen, dass sowieso gelöscht wird? Und selbst wenn es relativ viel speicher belegt, wird das löschen nicht unbedingt einen folgenden Prozess beschleunigen, da das löschen schon Zeit kosten kann, eher verlangsamen.
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2007-11-12 05:38.