首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何不改一行代码,让Hippy启动速度提升50%?

性能指标对比以下各项对比取至Linux上各引擎测试数据包加载耗时速度对比(越低越好)使用引擎执行业务JS代码,其中JSC和V8均是直接执行JS代码,QuickJS和Hermes是执行Bytecode。...图片QuickJS一骑绝尘,Hermes紧跟其后,JSC次之,V8最差;执行效率对比(越高越好)使用引擎跑一些开源的算法或者知名JS功能库。...,以QB首页Feed流(3.8M左右)举例,JSC和V8均输入原始js文件,QuickJS和Hermes输入JS编译后的Bytecode文件。...RuntimeHermes使用非常简单,提供了一个Runtime的抽象类,所有的js对象都执行在Runtime对象上,类似JSC的JSContext;派生了HermesRuntime子类来实现所有JS操作...JS引擎接口报的异常JSC引擎和V8处理逻辑不太一样,JSC的JSI接口会将Exception通过参数传递出来,V8是通过在调用上下文初始化TryCatch对象,对异常进行捕获;所以对于JSCJS异常

1.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

iOS引入JavaScriptCore引擎框架(二)

js端,由于只有暴露在全局的函数声明才能够让oc端访问,这就限制了js端的灵活性。...if(isiOS4JSC){ // 将注册的方法透出到window.jscObj的属性上 var ev = eval; $.JSBridge...._JSMethod = method; // 暴露函数至全局 // jsc只能执行全局函数声明方式定义的函数,不可以将函数指针复制给其他变量执行 ev('function toObjectCExec...尾声     我现在仍然相信,目前的iOS hybridAPP的主流通信方式仍然适corava的javascriptWebViewBridge,但是随着jsc引入到iOS7中,本文介绍的使用jsc(嵌入...js引擎的方式)来完成oc和js的通信将更为流行,尽管目前apple提供的针对jsc的开发接口文档几乎没有,但是我们通过webkit的源码做一些hack的方式也不是不可以,毕竟只要UIWebView仍然使用

1.5K40

判断js引擎是javascriptCore或者v8

5Bnative%20code%5D%20%7D') { document.write('V8 detected'); } else { document.write('JSC...方法通信,但是通过这个借口,虽然我们可以采用内置的jsc引擎执行js代码,但是无法进行更细粒度,深入到javascript运行时来执行代码,最直接的表现就是“无法在oc端对执行的js进行错误控制,如异常处理机制...执行js端的方法,获取js的参数(序列化的json字符串),在oc端进行反序列化,最后调用oc的函数;     2)oc端的stringByEvaluateJavascriptString在执行js代码时会阻塞...引擎并在js,oc两层搭建桥接层,并且每层持有2份相同的配置表,每个表中都记录js,oc透出的API,并结合iOS的事件机制完成oc和js的互调;第三种则仍是采用iOS7内置的javascriptCore...框架,不同于React Native的是使用jsc提供的通信机制,这套机制类似于android下WebView编码方式,oc端只需实现JSExpose协议,就将实现该协议的对象透到当前的上下文中,如在UIWebView

3.3K50

React Native 新架构

为了更好的理解 React Native 的工作原理,我们准备了这个基本图表 如图所示,有四个核心部分: 你自己书写的React 代码 从你书写的代码转换之后的js The Bridge , Native...React Native团队也在代码中加入了静态类型检查器(Flow或TypeScript),们正在开发一个名为CodeGen的工具来“自动化”的处理JS和native端之间的兼容性。...JSI and JSC 这部分介绍React Native如何使用你编写的代码以及新架构如何更改它。...为了增强这一部分,他们决定适当的分离从编写的代码生成的bundle和压缩的js,以及使用它的引擎。这是通过在两者之间引入第三个元素(明确称为JavaScript接口(JSI))来实现的。...首先,现在可以更轻松地将JSC更换为其他引擎(或更新版本的JSC,最近发生在RN 0.59中)。您可能知道的其他选项包括Microsoft的ChakraCore和Google的V8 。

2.1K50

【Dev Club分享】React Native项目实战总结。

前面我们讲到了jsc,那jsc就是桥接webnative的一个组件,在一定意义上等同于我们的浏览器内核。...那讲完jsc,那原理就比较容易理解了,就是通过jsc去解析我们的jsbundle,并将信息传递给native,最后由native不断去处理来自js层的调用,最终得到我们的native页面。...C++层:主要有我们的jsc,bridge,,jsloader等 JS层:这层相对大家就比较熟悉了,主要是包含组件的逻辑处理和一些布局,当然,这些布局信息最终也是转成我们终端的布局模型。...先来看看从java层到js层的调用。 ? 我们的业务逻辑其实是在js里面,那就这里出现了我们的启动逻辑,这里其实就是java层到js层调用的一个例子,由java去调用js的某个启动函数。...java,中间都必须经过我们的jsc进行桥接。

1.7K80

干货 | 加载速度提升15%,携程对RN新一代JS引擎Hermes的调研

主流JavaScript引擎,例如JSC、V8、SpiderMonkey等几乎都是为了桌面端浏览器服务的,Hermes针对移动终端设备的特点做了一些优化,其中最重要的我们认为是以下两点: 3.1 字节码预编译...// JSCRuntime.cpp jsc Runtime class JSCRuntime : public jsi::Runtime // hermes.h hermes Runtime class...JavaScriptExecutorFactory getDefaultJSExecutorFactory(String appName, String deviceName) { try { // If JSC...经过我们的数据验证,Faceback团队提出的关键性指标相较于原先的JSC都有了显著提高。 首屏渲染速度:bytecode代码执行情况下,Hermes比JavaScriptCore要快。...使用jsc加载优化之前的纯文本js,一旦优化完毕切换至Hermes引擎。 另外如果使用Hermes引擎我们需要充分测试稳定性和兼容性。

4.7K40

Pwn2Own-Safari 漏洞 CVE-2021-3073 分析与利用

(但第二阶段shellcode并未放出) stage2_server.py: 用于监听本地1337端口, 以发送第二阶段shellcode pwn.html: 浏览器漏洞利用入口, 调起pwn.js pwn.js...: 调起两个worker线程, 获取wasm数据并发放给worker线程 worker.js: worker线程, 用于加载wasm以触发漏洞 worker2.js: worker线程, 作为受害者线程承载...是WebKit的JavaScript引擎, 在JSC执行任何JavaScript代码之前, 它必须为其完成词法解析以及生成字节码, JSC有4个执行层: Low Level Interpreter(LLInt...高吞吐量优化编译器 程序段首先执行在最低级的字节码解释器中, 随着代码执行的增多, 就会被OSR(On-Stack-Replace)提升到更高的层级 WebKit中的WebAssembly程序同样是由JSC...要负责解析验证, 生成字节码以及实际运行 JSC由名为offlineasm的可移植汇编语言编写, 源码位于WebKit项目中的JavaScript/llint/LowLevelInterpreter.asm

1K10

【译】一种新的 JavaScriptCoere 字节码规范

在r237547版本我们介绍过一种新的 JavaScriptCore(JSC) 字节码规范。...在这篇文章中,我们准备从一份 JSC 的字节码示例开始讲起,旧版字节码规范的主要作用和他使用到的优化。接着,我们会看看新规范是怎么优化编译器的。...最后我们会看下新规范是如何影响内存和性能,还有这样重写之后怎样提高 JSC 的类型安全性。 背景 在 JSC 执行任何 JS 代码之前,必须经过编译和生成字节码的过程。...在像 Facebook 或者 Reddit 这种重 JS 逻辑的页面中,字节码负有撑大20%内存的责任。...// double.js function double(a) { return a + a; } double(2); 如果你用 jsc -d double.js 来执行上面的程序,JSC 会以

1K10
领券