패키지, 저장소 및 앱 카테고리 검색

패키지 상세v3.0.0

memoize

입력이 이전 호출과 변경되지 않았을 때 함수 호출의 캐시된 결과를 반환합니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
7.8만
좋아요
33
Pub 점수
130

패키지 설치

flutter pub add memoize

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

memoize 패키지는 입력 매개변수에 따라 함수 호출의 결과를 캐시하는 Dart 유틸리티입니다. 이전 호출과 동일한 인수로 함수가 호출되면 다시 계산하는 대신 캐시된 결과를 반환하여 비용이 많이 드는 또는 자주 호출되는 함수의 성능을 향상시킵니다. 이 패키지는 Android, iOS, Web, macOS, Windows, Linux 등 모든 주요 플랫폼을 지원합니다. 반응형 또는 상태 기반 애플리케이션에서 반복적인 계산을 피할 수 있어 특히 유용합니다. pub.dev를 통해 Flutter 프로젝트에 원활하게 통합될 수 있습니다.

사용 사례

  • 비싼 계산 캐싱
  • 안정적인 입력을 사용한 UI 렌더링 최적화
  • 상태 관리의 성능 향상
  • 중복 API 호출 줄이기
  • 데이터가 많은 앱에서 반응성 향상
  • 애니메이션에서 반복 계산 피하기

주요 기능

  • 입력 동등성에 기반한 자동 캐싱
  • 비동기 및 동기 함수 지원
  • 크로스 플랫폼 호환성
  • 경량이고 통합하기 쉬움
  • 사용자 정의 비교기 통해 복잡한 형식에 내장된 지원
  • 필요한 최소한의 보일러플레이트

적합한 대상

  • Flutter 앱의 성능을 최적화하는 개발자
  • 자주 재계산이 발생하는 상태 관리
  • 중량 계산 논리가 있는 앱
  • 빠른 업데이트를 요구하는 반응형 UI
  • 함수형 프로그래밍 패턴을 사용하는 팀

고려 사항

  • 캐시 크기가 커질수록 메모리 사용량이 증가합니다
  • 필요한 경우 캐시 무효화는 수동으로 처리해야 합니다
  • 부작용이 있는 함수에는 적합하지 않습니다
  • 사용자 정의 동등성 없이 가변 입력 객체와 잘 작동하지 않을 수 있습니다
  • 성능 향상은 함수 비용과 호출 빈도에 따라 달라집니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

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

카테고리

소스 저장소

이 패키지를 사용하는 프로젝트