本文整理汇总了C#中Func.Memoize方法的典型用法代码示例。如果您正苦于以下问题:C# Func.Memoize方法的具体用法?C# Func.Memoize怎么用?C# Func.Memoize使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Func
的用法示例。
在下文中一共展示了Func.Memoize方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CharRangeAST
static CharRangeAST()
{
Make = (minCharacter, maxCharacter, foldCaseCompare) =>
{
if (minCharacter > maxCharacter)
return NotTestAST.Make(AnyCharAST.Instance);
else if (minCharacter == maxCharacter)
return OneCharAST.Make(minCharacter, foldCaseCompare);
else
return new CharRangeAST(minCharacter, maxCharacter, foldCaseCompare);
};
Make = Make.Memoize();
}
示例2: MemzTest
public bool MemzTest(Func<int, int, int> f, int target1, int target2)
{
Stopwatch stopwatch = new Stopwatch ();
// time it raw
stopwatch.Start ();
var rawR = f (target1, target2);
stopwatch.Stop ();
var rawT = stopwatch.ElapsedTicks;
stopwatch.Reset ();
// memoized function
f = f.Memoize ();
// time it memoized:
// first run : same speed
stopwatch.Start ();
f (target1, target2);
stopwatch.Stop ();
var memT1 = stopwatch.ElapsedTicks;
stopwatch.Reset ();
// second run: faster
stopwatch.Start ();
var memR = f (target1, target2);
stopwatch.Stop ();
var memT2 = stopwatch.ElapsedTicks;
// Accurate?
Assert.AreEqual (rawR, memR);
// Mem2 is faster than mem1?
Assert.GreaterOrEqual(memT1, memT2);
// Mem2 is faster than raw?
//Console.WriteLine("{0}\t{1}\t{2}", rawT, memT1, memT2);
return rawT > memT2 ? true : false;
}
示例3: AndTestAST
static AndTestAST()
{
Make = (left, right) => Build(left, right);
Make = Make.Memoize();
}
示例4: NotTestAST
static NotTestAST()
{
Make = argument => Build(argument);
Make = Make.Memoize();
}
示例5: NFABuilder
/// <summary>Initializes and compiles a regular expression, with options that modify the pattern.</summary>
/// <param name="regexRep">The pattern to be compiled.</param>
/// <param name="opts">The options desired.</param>
/// <exception cref="ArgumentException"><paramref name="regexRep"/> is an ill-formed pattern.</exception>
internal NFABuilder(string regexRep, RegexOptions opts)
{
pending = new Queue<ASTTransition>();
visited = new Dictionary<RegexAST, int>();
instructIndex = ast =>
{
Instructions.Add(ast.ToInstruction(this));
return Instructions.Count - 1;
};
instructIndex = instructIndex.Memoize();
ParseInfo = new AnnotationVisitor(regexRep);
SyntaxTree = Parser.Parse(regexRep, opts);
SyntaxTree.Annotate(ParseInfo);
IgnoreCase = (opts & RegexOptions.IgnoreCase) != 0;
}
示例6: OneCharAST
static OneCharAST()
{
Make = (character, foldCaseCompare) => new OneCharAST(character, foldCaseCompare);
Make = Make.Memoize();
}