Exemple #1
0
        private static void ExecuteSunSpider()
        {
            const string fileName = @"..\..\..\Jint.Tests\SunSpider\Tests\access-fannkuch.js";

            var jint = new JintEngine();

            #if false
            jint.ExecuteFile(fileName);
            Console.WriteLine("Attach");
            Console.ReadLine();
            jint.ExecuteFile(fileName);
            #else

            jint.ExecuteFile(fileName);

            var times = new TimeSpan[20];
            int timeOffset = 0;
            var lowest = new TimeSpan();

            // Perform the iterations.

            for (int i = 0; ; i++)
            {
                long memoryBefore = GC.GetTotalMemory(true);

                var stopwatch = Stopwatch.StartNew();

                jint.ExecuteFile(fileName);

                var elapsed = stopwatch.Elapsed;

                long memoryAfter = GC.GetTotalMemory(false);

                times[timeOffset++] = elapsed;
                if (timeOffset == times.Length)
                    timeOffset = 0;

                if (times[times.Length - 1].Ticks != 0)
                {
                    var average = new TimeSpan(times.Sum(p => p.Ticks) / times.Length);

                    if (lowest.Ticks == 0 || average.Ticks < lowest.Ticks)
                        lowest = average;

                    Console.WriteLine(
                        "This run: {0}, average: {1}, lowest: {2}, memory usage: {3}",
                        elapsed.ToString("s\\.fffff"),
                        average.ToString("s\\.fffff"),
                        lowest.ToString("s\\.fffff"),
                        NiceMemory(memoryAfter - memoryBefore)
                    );
                }
            }
            #endif
        }
Exemple #2
0
        protected override object RunFile(JintEngine ctx, string fileName)
        {
            base.RunFile(ctx, fileName);

            string suitePath = Path.Combine(
                Path.GetDirectoryName(fileName),
                "underscore-suite.js"
            );

            return ctx.ExecuteFile(suitePath);
        }
Exemple #3
0
        public void ShouldNotRunInRun()
        {
            var filename = Path.GetTempFileName();
            File.WriteAllText(filename, "a='bar'");

            var engine = new JintEngine().AddPermission(new FileIOPermission(PermissionState.None));
            engine.AllowClr();
            engine.SetFunction("load", new Action<string>(p => engine.ExecuteFile(p)));
            engine.SetFunction("print", new Action<string>(Console.WriteLine));
            engine.Execute("var a='foo'; load('" + EscapeStringLiteral(filename) + "'); print(a);");
        }
Exemple #4
0
        protected override object RunFile(JintEngine ctx, string fileName)
        {
            string shellPath = Path.Combine(
                Path.GetDirectoryName(fileName),
                "shell.js"
            );

            if (File.Exists(shellPath))
                ctx.ExecuteFile(shellPath);

            return base.RunFile(ctx, fileName);
        }
Exemple #5
0
        public void ShouldRunInRun()
        {
            var filename = Path.GetTempFileName();
            File.WriteAllText(filename, "a='bar'");

            var engine = new JintEngine().AddPermission(new FileIOPermission(PermissionState.Unrestricted));
            engine.AllowClr();

            // The DLR compiler won't compile with permissions set
            engine.DisableSecurity();

            engine.SetFunction("load", new Action<string>(p => engine.ExecuteFile(p)));
            engine.SetFunction("print", new Action<string>(Console.WriteLine));
            engine.Execute("var a='foo'; load('" + EscapeStringLiteral(filename) + "'); print(a);");

            File.Delete(filename);
        }
Exemple #6
0
        private static void ExecuteV8()
        {
            const string fileName = @"..\..\..\Jint.Benchmarks\Suites\V8\raytrace.js";

            var jint = new JintEngine();

            jint.DisableSecurity();

            jint.ExecuteFile(@"..\..\..\Jint.Benchmarks\Suites\V8\base.js");

            jint.SetFunction(
                "NotifyResult",
                new Action<string, string>((name, result) => { })
            );
            jint.SetFunction(
                "NotifyError",
                new Action<string, object>((name, error) => { })
            );

            string score = null;

            jint.SetFunction(
                "NotifyScore",
                new Action<string>(p => { score = p; })
            );

            jint.ExecuteFile(fileName);

            Console.WriteLine("Attach");
            Console.ReadLine();

            jint.Execute(@"
                BenchmarkSuite.RunSuites({
                    NotifyResult: NotifyResult,
                    NotifyError: NotifyError,
                    NotifyScore: NotifyScore,
                    Runs: 1
            });");

            Console.WriteLine("Score: " + score);
        }
Exemple #7
0
 protected virtual object RunFile(JintEngine ctx, string fileName)
 {
     return ctx.ExecuteFile(fileName);
 }