edge.js


https://github.com/tjanczuk/edge

運行的時候會報 System.DllnotfoundException 無法加載node.dll,要把\packages\Edge.js.4.0.0\content\下edge目錄復制到運行環境下。 nuget自己不會復制這個目錄。

看了下source code,src\double\dotnet\EdgeJs.cs 實現這個。

 

開發環境下運行可以,但是到客戶環境運行確報錯, 

Error: The specified module could not be found.

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

 

復制了后發現報

Error: %1 is not a valid Win32 application.

查了半天,發現開發機里的 %windir%\system32下的 msvcp120.dll,msvcr120.dll 也是64位的,orz,上面一錯誤就是32位下運行64位程序的通用錯。

還好它源代碼里lib\native\win32下帶了這兩個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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM