Pakete, Repositories und App-Kategorien suchen

Paketdetailsv3.0.0

memoize

Gibt das zwischengespeicherte Ergebnis des Funktionsaufrufs zurück, wenn die Eingaben von der vorherigen Aufruf nicht geändert wurden.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
78.000
Likes
33
Pub-Punkte
130

Paket installieren

flutter pub add memoize

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Das memoize-Paket ist ein Dart-Tool, das die Ergebnisse von Funktionsaufrufen basierend auf ihren Eingabeparametern zwischenspeichert. Wenn eine Funktion mit denselben Argumenten wie ein vorheriger Aufruf aufgerufen wird, gibt sie stattdessen das zwischengespeicherte Ergebnis zurück, anstatt es neu zu berechnen, wodurch die Leistung bei teuren oder häufig aufgerufenen Funktionen verbessert wird. Das Paket unterstützt alle wichtigen Plattformen, einschließlich Android, iOS, Web, macOS, Windows und Linux. Es ist besonders nützlich in reaktiven oder zustandsbasierten Anwendungen, bei denen sich wiederholte Berechnungen vermeiden lassen. Es lässt sich nahtlos über pub.dev in Flutter-Projekte integrieren.

Anwendungsfälle

  • Kostspielige Berechnungen zwischenspeichern
  • Optimierung der UI-Rendern mit stabilen Eingaben
  • Verbesserung der Leistung in der Zustandsverwaltung
  • Reduzierung redundanter API-Aufrufe
  • Verbesserung der Reaktionsfähigkeit in datenintensiven Anwendungen
  • Vermeidung wiederholter Berechnungen in Animationen

Hauptmerkmale

  • Automatisches Caching basierend auf Eingabegleichheit
  • Unterstützung für asynchrone und synchrone Funktionen
  • Plattformübergreifende Kompatibilität
  • Leicht und einfach zu integrieren
  • Eingebaute Unterstützung für komplexe Typen über benutzerdefinierte Vergleicher
  • Minimale Boilerplate-Anforderung

Geeignet für

  • Entwickler, die die Leistung in Flutter-Apps optimieren
  • Zustandsverwaltung mit häufigen Neuberechnungen
  • Apps mit schwerer Berechnungslogik
  • Reaktive Benutzeroberflächen, die schnelle Aktualisierungen erfordern
  • Teams, die funktionale Programmiermuster verwenden

Hinweise

  • Der Speicherverbrauch steigt mit der Cachegröße
  • Die Cache-Invalidierung muss bei Bedarf manuell behandelt werden
  • Nicht geeignet für Funktionen mit Seiteneffekten
  • Funktioniert möglicherweise nicht gut mit veränderbaren Eingabeobjekten ohne benutzerdefinierte Gleichheit
  • Die Leistungssteigerung hängt von der Funktionskosten und der Aufrufhäufigkeit ab

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

Memoize

memoize returns cached result of function call when inputs were not changed from previous invocation.

Warning

memoize_dart now supports dart 2.12.0 and null safety since 3.0.0 version.

For 2.0.0 we drop func as dependency. Because it archived and doesn't support dart2.

If you need dart-1.24.3 use 1.4.0 version

Examples

memo1, memo2, ... memo10 compare arguments with == operator:

import 'dart:math';
import 'package:memoize/memoize.dart';

void main() {
  var rect1 = new Rectangle<int>(0, 0, 10, 10);
  var rect2 = new Rectangle<int>(0, 0, 10, 10);

  var func = memo1((Rectangle<int> a) => a.width * a.height);

  print(func(rect1));
  print(func(rect2)); // cached result is returned
}

imemo1, imemo2, ... imemo10 compare arguments with identical function:

import 'dart:math';
import 'package:memoize/memoize.dart';

void main() {
  var rect1 = new Rectangle<int>(0, 0, 10, 10);
  var rect2 = new Rectangle<int>(0, 0, 10, 10);

  var func = imemo1((Rectangle<int> a) => a.width * a.height);

  print(func(rect1));
  print(func(rect1)); // cached - same object instance
  print(func(rect2)); // not cached - different object instance
}

memo0 caches result on first call and can be used as lazy cache:

import 'dart:math';
import 'package:memoize/memoize.dart';

void main() {
  var func = memo0(() => new Rectangle<int>(0, 0, 10, 10));

  print(func());
  print(func()); // cached - same object instance
}

Contributors

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden