Sylveon.Memorize 1.0.0

A simple .NET Standard library to memoize a function with a single parameter

There is a newer version of this package available.
See the version list below for details.
Install-Package Sylveon.Memorize -Version 1.0.0
dotnet add package Sylveon.Memorize --version 1.0.0
<PackageReference Include="Sylveon.Memorize" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sylveon.Memorize --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Memorize

A simple .NET Standard library to memoize a function with a single parameter

Examples

  • Cache the result of a function taking a non-nullable object:
int MyComplexMathOperation(int i)
{
    Thread.Sleep(10000); // Sleep 10 seconds.
    return ++i;
}

var memoize = new Memorizer<int, int>(MyComplexMathOperation);
Console.WriteLine(memoize.Invoke(2)); // Takes some time
Console.WriteLine(memoize.Invoke(2)); // Instant
  • Cache the result of a function taking a nullable object:
// inb4 deleting this breaks React
string MySlowAndWeirdLeftPad(string str)
{
    Thread.Sleep(10000); // Sleep 10 seconds.
    return str == null ? "Hello" : str.PadLeft(10);
}

var memoize = new NullableMemorizer<string, string>(MySlowAndWeirdLeftPad);
Console.WriteLine(memoize.Invoke(null)); // Takes some time
Console.WriteLine(memoize.Invoke(null)); // Instant

Additional utilities are provided for your convenience:

  • bool IsResultMemorized(T param): Verify if a result has been cached
  • void ClearMemorizedResults(): Clear the cache
  • TResult GetMemorizedResult(T param): Get a cached result
  • bool TryGetMemorizedResult(T param, out TResult result): Try getting a cached result

Refer to the XML documentation for more info.

Memorize

A simple .NET Standard library to memoize a function with a single parameter

Examples

  • Cache the result of a function taking a non-nullable object:
int MyComplexMathOperation(int i)
{
    Thread.Sleep(10000); // Sleep 10 seconds.
    return ++i;
}

var memoize = new Memorizer<int, int>(MyComplexMathOperation);
Console.WriteLine(memoize.Invoke(2)); // Takes some time
Console.WriteLine(memoize.Invoke(2)); // Instant
  • Cache the result of a function taking a nullable object:
// inb4 deleting this breaks React
string MySlowAndWeirdLeftPad(string str)
{
    Thread.Sleep(10000); // Sleep 10 seconds.
    return str == null ? "Hello" : str.PadLeft(10);
}

var memoize = new NullableMemorizer<string, string>(MySlowAndWeirdLeftPad);
Console.WriteLine(memoize.Invoke(null)); // Takes some time
Console.WriteLine(memoize.Invoke(null)); // Instant

Additional utilities are provided for your convenience:

  • bool IsResultMemorized(T param): Verify if a result has been cached
  • void ClearMemorizedResults(): Clear the cache
  • TResult GetMemorizedResult(T param): Get a cached result
  • bool TryGetMemorizedResult(T param, out TResult result): Try getting a cached result

Refer to the XML documentation for more info.

Release Notes

First release

  • .NETStandard 2.0

    • No dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.1.0 398 1/17/2018
1.0.1 378 1/14/2018
1.0.0 307 1/14/2018