Sylveon.Memorize 1.0.1

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.1
dotnet add package Sylveon.Memorize --version 1.0.1
<PackageReference Include="Sylveon.Memorize" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sylveon.Memorize --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Sylveon.Memorize, 1.0.1"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sylveon.Memorize as a Cake Addin
#addin nuget:?package=Sylveon.Memorize&version=1.0.1

// Install Sylveon.Memorize as a Cake Tool
#tool nuget:?package=Sylveon.Memorize&version=1.0.1
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

  • Memorize 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
  • Memorize 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 memorized
  • void ClearMemorizedResults(): Clear the cache
  • TResult GetMemorizedResult(T param): Get a memorized result
  • bool TryGetMemorizedResult(T param, out TResult result): Try getting a memorized result

Refer to the XML documentation for more info.

Memorize

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

Examples

  • Memorize 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
  • Memorize 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 memorized
  • void ClearMemorizedResults(): Clear the cache
  • TResult GetMemorizedResult(T param): Get a memorized result
  • bool TryGetMemorizedResult(T param, out TResult result): Try getting a memorized result

Refer to the XML documentation for more info.

Release Notes

Add XML documentation to NuGet package, some internal changes

  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.1.0 685 1/17/2018
1.0.1 632 1/14/2018
1.0.0 551 1/14/2018