Daten :: Wiederverwendung.

Teilen Sie konstante Werte mit Daten :: Alias
Jetzt downloaden

Daten :: Wiederverwendung. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Elizabeth Mattijsen
  • Website des Verlags:
  • http://search.cpan.org/~elizabeth/

Daten :: Wiederverwendung. Stichworte


Daten :: Wiederverwendung. Beschreibung

Teilen Sie konstante Werte mit Daten :: Alias Standardmäßig teilt Perl nicht wörtliche (0-, 'Foo', "bar") Werte. Das ist, dass, sobald ein wörtlicher Wert in variabler (einem Container) gespeichert ist, der Inhalt dieses Behälters geändert werden kann. Auch wenn ein solcher Container "Nur schreibgeschützt" (z. B. mit einem Modul wie Scalar :: ReadOnly) markiert ist, ist es nicht dazu, dass die Werte nicht geteilt werden. Daher hat jedes Ereignis desselben literalen Werts einen eigenen Speicherplatz, selbst wenn er intern markiert ist, wenn er in intern markiert ist in den gleichen Behälter. Sobald ein Versuch unternommen wird, den Behälter zu ändern, würde Perl eine Kopie des Containers herstellen und den neuen Wert dort einsetzen. Dieses Prinzip wird normalerweise als Copy-on-Write (Kuh) bezeichnet. Leider hat Perl diese IMs nicht im Data :: Alias-Modul, mit dem Sie Container zwischen verschiedenen Variablen (unter anderem) teilen können. Es erlaubt Ihnen jedoch immer noch nicht, dass Sie nicht wörtliche Werte haben, die dieselben Speicherpositionen teilen. Was Sie viel Speicher sparen können, wenn Sie mit großen Datenstrukturen mit ähnlichen Werten arbeiten. Das ist besonders nett in einer Mod_Perl-Umgebung, in der die Speicherverwendung von persistenten Prozessen eines der Hauptprobleme ist. Kurs, Kurs, keine Gedächtniseinsparungen für wörtliche Werte, die nur einmal auftreten. Es ist also wichtig, dass Sie die Funktionalität dieses Moduls weisen nutzen, nur auf Werten, die Sie mindestens zweimal dupliziert haben. Fixieren Sie mein @array => (0, 1, 2, 3); # Initialisieren und fixieren Sie meinen @Filled_Array = (0, 1, 2, 3); Fixate @ filled_array; # Bestehende Werte fixieren drucken \ $ array == \ $ fold_array ? "Share Memory \ n": "Teilen Sie keine Speicher \ N"; fixieren Sie meine% Hash => (Null => 0, eins => 1, zwei => 2, drei => 3); my% fold_hash = (null => 0, one => 1, zwei => 2, drei => 3); fixat% gefüllt_hash; Print \ $ Hash {Zero} == \ $ fold_hash {null}? "Share Memory \ n": "Teilen Sie keine Speicher \ N"; Daten verwenden :: Wiederverwendung QW (Wiederverwendung); meine $ listref wiederverwenden = ; wiederverwenden mein $ hashref = {null => 0, eins => 1, zwei => 2, drei => 3}; drucken \ $ listref -> == \ $ HashRef -> {Zero}? "Share Memory \ n": "Teilen Sie keine Speicher \ N"; Verwenden Sie Daten: Alias QW (Alias); Daten verwenden :: Wiederverwendung QW (Wiederverwendung); Alias meine @foo = Wiederverwendung (0, 1, 2, 3); Print \ $ Foo == \ $ HashRef -> {Zero}? "Share Memory \ n": "Teilen Sie keine Speicher \ N"; Verwenden Sie Daten: Wiederverwendung QW (Verbreitung); verbreiten Sie my% spread_hash => undef, qw (foo bar baz); drucken \ $ spread_hash {foo} == \ $ spread_hash {bar}? "Share Memory \ n": "Teilen Sie keine Speicher \ N"; Spread my @sPread_Array => 1, 0 .. 3; Print \ $ spread_array == \ $ spread_array ? "Share Memory \ n": "Teilen Sie keine Speicher \ N"; Verwenden Sie Daten :: Wiederverwendung qw (vergessen); vergessen(); # Freier Speicher, der zum Tracking von Konstantenwerten verwendet wird: · Perl.


Daten :: Wiederverwendung. Zugehörige Software