当前位置: 首页>>代码示例>>C#>>正文


C# Func.Memoize方法代码示例

本文整理汇总了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();
 }
开发者ID:MichaelBrazier,项目名称:brasswork-regex,代码行数:13,代码来源:CharRangeAST.cs

示例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;
        }
开发者ID:cbowdon,项目名称:Functional,代码行数:39,代码来源:TimeTest.cs

示例3: AndTestAST

 static AndTestAST()
 {
     Make = (left, right) => Build(left, right);
     Make = Make.Memoize();
 }
开发者ID:MichaelBrazier,项目名称:brasswork-regex,代码行数:5,代码来源:AndTestAST.cs

示例4: NotTestAST

 static NotTestAST()
 {
     Make = argument => Build(argument);
     Make = Make.Memoize();
 }
开发者ID:MichaelBrazier,项目名称:brasswork-regex,代码行数:5,代码来源:InstructAST.cs

示例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;
 }
开发者ID:MichaelBrazier,项目名称:brasswork-regex,代码行数:19,代码来源:NFABuilder.cs

示例6: OneCharAST

 static OneCharAST()
 {
     Make = (character, foldCaseCompare) => new OneCharAST(character, foldCaseCompare);
     Make = Make.Memoize();
 }
开发者ID:MichaelBrazier,项目名称:brasswork-regex,代码行数:5,代码来源:OneCharAST.cs


注:本文中的Func.Memoize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。