精易论坛

标题: 易语言调用GoogleV8引擎执行JS [打印本页]

作者: 〃扯淡的人生    时间: 2018-7-8 11:54
标题: 易语言调用GoogleV8引擎执行JS
本帖最后由 〃扯淡的人生 于 2018-7-8 13:10 编辑

V8 引擎简介

Google V8 引擎使用 C++ 代码编写,实现了 ECMAScript 规范的第五版,可以运行在所有的主流

操作系统中,甚至可以运行在移动终端 ( 基于 ARM 的处理器,如 HTC G7 等 )。V8 最早被开发用以嵌入到 Google 的开源浏览器 Chrome 中,但是 V8 是一个可以独立的模块,完全可以嵌入您自己的应用,著名的 Node.js( 一个异步的服务器框架,可以在服务端使用 JavaScript 写出高效的网络服务器 ) 就是基于 V8 引擎的。

和其他 JavaScript 引擎一样,V8 会编译 / 执行 JavaScript 代码,管理内存,负责垃圾回收,与宿主语言的交互等。V8 的垃圾回收器采用了众多技术,使得其运行效率大大提高。通过暴露宿主对象 ( 变量,函数等 ) 到 JavaScript,JavaScript 可以访问宿主环境中的对象,并在脚本中完成对宿主对象的操作。

吐槽:V8的各种奇淫技巧简直能折磨死很多人

我用C++封装了V8的基本功能(执行并编译JavaScript代码)供易语言调用(压缩后1.34 MB),感觉性能还不错,现在分享给大家使用

【在易语言编译版测试中,执行10万次JSON.stringify([1,2,3])用时1.3秒,执行一次TEA加密用时16毫秒】

易语言调用的步骤大致如图所示:

[attach]777259[/attach]



注意:每个V8对象都是线程安全的,你可以在多线程环境下放心的使用

附件已打包




Zpng.png (79.2 KB, 下载次数: 10)

Zpng.png

V8Engine.rar

1.64 MB, 下载次数: 4563, 下载积分: 精币 -2 枚


作者: hanyxiang    时间: 2018-7-8 12:05
看来还是接触一下c++才能提高水平啊
作者: 小白子    时间: 2018-7-8 12:06
感谢楼主大大的分享
我想问一下,这个和现在的V8引擎是不是有区别的?
作者: 冰岛    时间: 2018-7-8 12:06

作者: 天雨时晴    时间: 2018-7-8 12:16
感谢楼主大大的分享
作者: 〃扯淡的人生    时间: 2018-7-8 12:34
lixuhui2468 发表于 2018-7-8 12:06
感谢楼主大大的分享
我想问一下,这个和现在的V8引擎是不是有区别的?

这个是以前的版本,现在的版本体积很大 如果单单为了执行一个脚本带上那么大一个玩意不合适,速度都差不多
作者: 2442295093    时间: 2018-7-8 13:18
c++,这么厉害嘛
作者: sampo    时间: 2018-7-8 14:08
感谢楼主分享
作者: 空之影    时间: 2018-7-8 14:41
表示好奇问问,你这个没有内存泄漏吗?
作者: longsui48    时间: 2018-7-8 15:08
好像很厉害的样子
作者: weihua2018    时间: 2018-7-8 15:12
干什么用的啊
作者: 〃扯淡的人生    时间: 2018-7-8 15:23
空之影 发表于 2018-7-8 14:41
表示好奇问问,你这个没有内存泄漏吗?

一个V8对象析构的时候会释放所有占用空间....
作者: 空之影    时间: 2018-7-8 15:28
〃扯淡的人生 发表于 2018-7-8 15:23
一个V8对象析构的时候会释放所有占用空间....

看来你没调试过。
作者: 〃扯淡的人生    时间: 2018-7-8 15:41
空之影 发表于 2018-7-8 15:28
看来你没调试过。

调试了的,内存基本稳定在一个值不会上涨了,当你释放的时候内存会释放
作者: q2490295881    时间: 2018-7-8 16:39
谢谢分享哦
作者: anner    时间: 2018-7-8 17:37
有内存泄漏
作者: anner    时间: 2018-7-8 17:57
中文乱码了
作者: 人气猫    时间: 2018-7-8 18:04
感谢分享。。。。。。。。。。。。
作者: anner    时间: 2018-7-8 18:20
你把”hello,world”换成”你好,世界”试试
作者: 〃扯淡的人生    时间: 2018-7-8 18:48
anner 发表于 2018-7-8 18:20
你把”hello,world”换成”你好,世界”试试

内部是utf8格式,先把中文转utf8.结果在转回ansi
作者: 〃扯淡的人生    时间: 2018-7-8 18:51
anner 发表于 2018-7-8 17:37
有内存泄漏

一个v8对象所占的内存会稳定在一个值,对象释放内存会被释放,不会有泄露
作者: 〃扯淡的人生    时间: 2018-7-8 18:51
anner 发表于 2018-7-8 17:57
中文乱码了

中文先转utf8.
作者: Codebug    时间: 2018-7-9 00:26
说到内存泄漏,好像之前论坛的就存在这问题
作者: sunmoonstar    时间: 2018-7-9 16:48
下来试试看
作者: 天雨时晴    时间: 2018-7-9 20:45
支持开源~!感谢分享
作者: fyhfzt    时间: 2018-7-11 08:17
支持开源~!感谢分享
作者: dulang    时间: 2018-7-11 12:45
看看这个,貌似厉害啊
作者: ovo555    时间: 2018-7-12 07:43
很牛了!!!!!!!!!!
作者: flni    时间: 2018-7-12 07:53
支持开源~!感谢分享
作者: weixin168168    时间: 2018-7-12 09:45
请问这个怎么用,用在什么方面,???
作者: apathia    时间: 2018-7-12 14:21
正需要这个,谢谢楼主
作者: small莲    时间: 2018-7-12 22:21
感谢楼主了_(ω 」∠)_
作者: zbp1218    时间: 2018-7-12 23:45
好东西,谢谢你的分享
作者: LBrowser    时间: 2018-7-13 23:53
伸手拿了,顺便亲了你一下             
作者: 浪漫伊波啦    时间: 2018-7-14 23:06
支持开源~!感谢分享
作者: ◆野蛮vE儿    时间: 2018-7-14 23:10
好像中文 支持有问题。
作者: 836415715    时间: 2018-7-16 18:20
学习学习谢谢
作者: 无敌灰灰    时间: 2018-7-17 21:56
牛逼了,果断下载。。。
作者: 饭没了秀    时间: 2018-7-18 07:04
mark 需要鼓励鼓励
作者: hanyxiang    时间: 2018-7-20 23:49
其实想问下能不能实现类似 ajax的效果?
作者: 思雪°    时间: 2018-7-22 05:15
mark一下
作者: lonelywatcher    时间: 2018-7-24 14:52
支持楼主。感谢分享
作者: hanyxiang    时间: 2018-7-24 19:46
想问下能增加个调试错误行号和位置吗?这样更方便排查
作者: chendipang    时间: 2018-7-28 23:55
能不能加个遇到错误输出   错误行的位置跟源文件@〃扯淡的人生

例如:错误所在行:
1

错误信息:
ReferenceError: console is not defined

源文件:
console.log(6);document._jv='819ca2987f4647cbe615c89c8c30eec5-Y3XL5lLX1532704454585'
^

堆栈追踪:
ReferenceError: console is not defined
    at eval (eval at xxx (unknown source), <anonymous>:1:1)
    at xxx (<anonymous>:2:2233)
    at <anonymous>:1:1
作者: 左哼哼    时间: 2018-9-4 21:49
后续更新版本能不能增加个回调函数绑定
作者: zbp1218    时间: 2018-9-10 06:30
象都是线程安全的,你可以在多线程环境下放心的
作者: zbp1218    时间: 2018-9-10 06:30
象都是线程安全的,你可以在多线程环境下放心的
作者: zbp1218    时间: 2018-9-10 06:31
象都是线程安全的,你可以在多线程环境下放心的
作者: 网络注册会员    时间: 2018-9-10 08:51
支持一下哦
作者: qi562984326    时间: 2018-9-14 17:50

支持一下哦
作者: wang1209935704    时间: 2018-9-15 01:54
555555555555555555555
作者: justintan    时间: 2018-9-19 10:44
支持一下哦
作者: liyi2882449    时间: 2018-9-21 09:42
感谢楼主的分享,感谢,,让我学习了很多6756
作者: vaseful    时间: 2018-9-28 19:08
易语言调用GoogleV8引擎执行JS
作者: 冷霜醉    时间: 2018-10-6 16:33
看着不错 支持下  试试
作者: maluking    时间: 2018-10-31 21:08
NB,,,,,,,,
作者: suntojava    时间: 2018-11-5 22:58
绝对牛逼,支持开源。
作者: lhl8730    时间: 2018-11-7 14:08
绝对牛逼,支持开源
作者: shawnking    时间: 2018-11-15 20:22
大神牛逼,膜拜
作者: 疯狂的滑板    时间: 2018-11-28 16:31
感谢大神
作者: pengj88    时间: 2018-11-29 14:48
支持开源~!感谢分享
作者: 南风窗    时间: 2018-12-3 21:10
下载了。
作者: carter09    时间: 2018-12-4 10:38
支持开源~感谢分享
作者: wq6190    时间: 2018-12-5 09:22
支持开源~!感谢分享
作者: wq6190    时间: 2018-12-5 09:23
支持开源~!感谢分享
作者: chsdwyl    时间: 2018-12-5 23:17
#在这里快速回复#能不能增加个回调函数绑定?
作者: jxhuc    时间: 2018-12-27 18:12
支持开源~!感谢分享
作者: chencong5025    时间: 2018-12-29 16:21
似乎有泄露吧。我200线程跑两轮  出现内存固定增长
作者: WinXsp    时间: 2019-1-2 05:10
大神牛逼,膜拜
作者: WinXsp    时间: 2019-1-2 05:10
大神牛逼,
作者: WinXsp    时间: 2019-1-2 05:10
牛逼,大神
作者: liaoxiaohu    时间: 2019-1-5 23:44
6666666666
作者: sunzixian001    时间: 2019-1-7 04:31
支持开源~!感谢分享
作者: xqxqxq    时间: 2019-1-18 09:26

支持开源~感谢分享
作者: jyt8td    时间: 2019-2-16 23:19
支持开源~!感谢分享
作者: 風輕揚    时间: 2019-3-8 11:18
6666,看看
作者: sangzh    时间: 2019-3-12 23:16
V8  不明白   我得努力
作者: 星之闪烁    时间: 2019-3-24 22:34
支持开源~!感谢分享
作者: q4892259    时间: 2019-6-29 02:12
可以找你做软件吗
作者: leevi    时间: 2019-7-9 18:41
好东西啊。 楼主好人
作者: shawnking    时间: 2019-10-25 11:30
牛逼,666啊
作者: 牙子    时间: 2020-3-20 23:14
666666666666666666666
作者: 2161045897    时间: 2020-3-31 11:00
感谢分享~~~~~~~~~
作者: 我是逛逛    时间: 2020-5-4 02:08
6666           
作者: ovo555    时间: 2020-6-17 12:12
6666666666666666666
作者: 15339587789    时间: 2020-7-9 10:53
牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很牛得很
作者: 生生    时间: 2020-7-9 20:34
这个好,找寻进来了还可以下载,谢谢!
作者: 846850004    时间: 2020-7-27 21:01
多谢大神分享,
作者: 那袜子    时间: 2020-8-18 20:52
楼主有函数的参数文档吧。我用其他的程序调用DLL会报错。
作者: dulang    时间: 2020-9-1 10:15
支持开源~!感谢分享
作者: 精准股价预测    时间: 2020-12-30 10:36
VC++源码还在吗,可以编绎一个STDCALL接口的DLL吗?
作者: E_run    时间: 2021-1-11 13:16
到现在不知道怎么穿参。。。
作者: 西瓜大大    时间: 2021-1-28 12:02
谢谢 刚好需要这个
作者: 西瓜大大    时间: 2021-1-30 17:22
易语言的对象概念号模糊啊, 怎么调用宿主对象/子程序呢
作者: kvx55c    时间: 2021-2-3 12:52
回帖是美德
作者: 暮光Date    时间: 2021-8-16 04:21
到现在不知道怎么穿参。。。
作者: 天天有饭吃    时间: 2021-8-26 23:13
6666666666666666
作者: nuan1989    时间: 2021-9-20 12:05
js代码如果是有语法错误, 那就爽歪歪了, 直接死了进程.
作者: nuan1989    时间: 2021-9-20 12:06
真觉得没一个好用的v8封装...
作者: 〃扯淡的人生    时间: 2021-9-20 12:11
nuan1989 发表于 2021-9-20 12:06
真觉得没一个好用的v8封装...

RS支持库欢迎你的加入




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4