zoukankan      html  css  js  c++  java
  • edge.js

    https://github.com/tjanczuk/edge

    运行的时候会报 System.DllnotfoundException 无法加载node.dll,要把packagesEdge.js.4.0.0content下edge目录复制到运行环境下。 nuget自己不会复制这个目录。

    看了下source code,srcdoubledotnetEdgeJs.cs 实现这个。

    开发环境下运行可以,但是到客户环境运行确报错, 

    Error: The specified module could not be found.

    用depends工具看了下edge.node (在edgex64 & x86 下) 需要 msvcp120.dll,msvcr120.dll

    复制了后发现报

    Error: %1 is not a valid Win32 application.

    查了半天,发现开发机里的 %windir%system32下的 msvcp120.dll,msvcr120.dll 也是64位的,orz,上面一错误就是32位下运行64位程序的通用错。

    还好它源代码里lib ativewin32下带了这两个dll ,ia32目录下是32位,x64下64位。

    -------------------------------------------------------

    edge文档里写的需要 .net 4.5,其实edge 4.0.0是用.net 4.0运行的,手上老项目还是.net 4.0一时不能升级,不能用async await 关键字。改成.net调用task的方法

    using System;
    using System.Diagnostics;
    using System.Threading.Tasks;
    using EdgeJs;
    
    class Program
    {
       
        static void Main(string[] args)
        {     
            var func = Edge.Func(@"
                return function (data, callback) 
            {
                 var date1 = new Date();
               
                     for(var i = 0;i<100;i++)
                     {
                    var diff = date1-data;
                  
                  }  callback(null, 'Node.js welcomes ' + diff);
                }
            ");
            
            Stopwatch s = Stopwatch.StartNew();
            
            for(int i = 0;i<300000;i++)
            {
                
                var task = func(new DateTime(2015,1,1).AddDays(1));
                var a = task.Result;
                //Console.WriteLine(a);
            }
            s.Stop();
            Console.WriteLine(s.Elapsed.TotalSeconds);
            Console.ReadLine();
            
        }
    }

    测了一下速度 300000 * 100 次date类型减法 , 16s~18s

    似乎比ClearScript快, jint更加没法比。

    ------------------------------------------------------

    edge和jint里, .net的DateTime到javascript变成 js的Date

    ClearScript和jurassic 确还是clr的DateTime

    jint里list和array也变成js array

    edge还没测

    ----------------------------------------------------------

    不用装node.js也可以用,可能用node自己模块会要装node.js

  • 相关阅读:
    23种设计模式
    Java实现动态代理的两种方式
    jQuery easyui combobox级联及内容联想
    使用Spring MVC统一异常处理
    springmvc下使用kaptcha做验证码
    Hadoop及spark介绍
    jQuery easyui 之 expend row
    Http 1.1协议
    公钥、私钥、CA认证、数字签名、U盾
    SOA架构介绍
  • 原文地址:https://www.cnblogs.com/peteryu007/p/5334141.html
Copyright © 2011-2022 走看看