static void testMapping() { var pattern = "var f; function k(){var t=0; while(false) t=t;} function a(){ var t=0; while(t<1) ++t; return t>3; } /*a();*/ var c=b.Name; var d=b.Age; b.Age=15; /*for(var i=0;i<100;++i){ d=b.Age;b.Age=i; b.Name=\"cat\"; c=b.Say();b.Add(); f=a(); k();}*/"; Tokenizer tg = new Tokenizer(); var watch = new Stopwatch(); var reader = new SequenceReader <Token>(tg.Tokenize(pattern)); var block = new TopBlock(); var p = new Animal { Name = "dog", Age = 10 }; block.Declare("b", new JMappingObject(p)); var builder = new TopBlockBuilder(reader, block); builder.Build(); watch.Start(); builder.Block.Excute(null); Console.WriteLine(watch.ElapsedMilliseconds); Console.WriteLine("c is " + block.GetVariable("c")); Console.WriteLine("d is " + block.GetVariable("d")); Console.WriteLine("f is " + block.GetVariable("f")); Console.WriteLine(p.Age); Console.WriteLine(p.Name); Console.Read(); }
static void tsetExcute() { var pattern = " var d=\"hello\"+\" world!\"; var b=d==\"hello world!\";var f=d+\" just for test! \"; var a=15; function add(b,c){ var t=0; for(var i=b;i<c;++i) t=t+i*5; return t;} var c= add(1,100000); "; Tokenizer tg = new Tokenizer(); var watch = new Stopwatch(); for (int i = 0; i < 100000; i++) { var reader = new SequenceReader <Token>(tg.Tokenize(pattern)); var block = new TopBlock(); var builder = new TopBlockBuilder(reader, block); builder.Build(); watch.Start(); builder.Block.Excute(null); Console.WriteLine(watch.ElapsedMilliseconds); Console.WriteLine("a is " + block.GetVariable("a")); Console.WriteLine("c is " + block.GetVariable("c").ToString()); Console.WriteLine("b is " + block.GetVariable("b").ToString()); Console.WriteLine("d is " + block.GetVariable("d")); Console.WriteLine("f is " + block.GetVariable("f")); Console.Read(); } Console.WriteLine($"spend:{watch.ElapsedMilliseconds} "); var watch2 = new Stopwatch(); watch2.Start(); var a = 7; var b = 9; for (int i = 0; i < 10000; i++) { var c = (a + b * b - a) - a * 7 + a - b + b + b * a; } Console.WriteLine(watch2.ElapsedMilliseconds); }
static void testTopBuilder() { var pettern = @" try { a=a()+6; } catch(var ex) { } finally { } a=c.b(9*5-9*8)+6>7?b?v:h:d?j:k; function a() { } for(var i=0;i<10;++i) { if(i>9) break; elif(v<10) break; else continue; } while(true) ++a[y*7]; do { }while(true) h=(f()+6)*g; ++i; foreach(var d in a.getAll()) { } ++a.b(s,7+8)+b.b.b; "; var s = new StringBuilder(); for (int i = 0; i < 50000; i++) { s.Append(pettern); } Tokenizer tg = new Tokenizer(); var reader = new SequenceReader <Token>(tg.Tokenize(s.ToString())); var watch = new Stopwatch(); watch.Start(); var builder = new TopBlockBuilder(reader, null); builder.Build(); Console.WriteLine($"total length ={s.Length},top build spend:{watch.ElapsedMilliseconds} "); }