首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏向治洪

    Google V8 引擎

    引擎 前面,我们介绍了V8引擎的一些历史,下面我们重点来看看V8项目一些知识。 V8引擎渲染过程 V8引擎在执行JavaScript的过程中,主要有两个阶段:编译和运行。 垃圾回收 V8 使用了分代和大数据的内存分配,在回收内存时使用精简整理的算法标记未引用的对象,然后消除没有标记的对象,最后整理和压缩那些还未保存的对象,即可完成垃圾回收。 在V8中,使用较多的是年轻分代和年老分代。年轻分代中的对象垃圾回收主要通过Scavenge算法进行垃圾回收。在Scavenge的具体实现中,主要采用了Cheney算法。 Cheney算法:通过复制的方式实现的垃圾回收算法。它将堆内存分为两个 semispace,一个处于使用中(From空间),另一个处于闲置状态(To空间)。当分配对象时,先是在From空间中进行分配。

    2.2K61发布于 2018-02-06
  • 来自专栏向治洪

    V8引擎

    引擎 前面,我们介绍了V8引擎的一些历史,下面我们重点来看看V8项目一些知识。 V8引擎渲染过程 V8引擎在执行JavaScript的过程中,主要有两个阶段:编译和运行。 用一张图可以表示如下: 垃圾回收 V8 使用了分代和大数据的内存分配,在回收内存时使用精简整理的算法标记未引用的对象,然后消除没有标记的对象,最后整理和压缩那些还未保存的对象,即可完成垃圾回收。 在V8中,使用较多的是年轻分代和年老分代。年轻分代中的对象垃圾回收主要通过Scavenge算法进行垃圾回收。在Scavenge的具体实现中,主要采用了Cheney算法。 Cheney算法:通过复制的方式实现的垃圾回收算法。它将堆内存分为两个 semispace,一个处于使用中(From空间),另一个处于闲置状态(To空间)。当分配对象时,先是在From空间中进行分配。

    1.4K41编辑于 2022-11-30
  • 来自专栏米扑专栏

    Android 8款开源游戏引擎

    项目地址:http://code.google.com/p/angle/ 2、Rokon  (2D    Java) rokon是一款Android 2D游戏引擎,基于OpenGL ES技术开发,物理引擎为 项目地址:http://code.google.com/p/loon-simple/ 4、AndEngine andengine同样是一款基于OpenGL ES技术的Android游戏引擎,物理引擎同样为 ,物理引擎采用Box2D实现。 该引擎与LGame(此为2D游戏引擎)相类似,目前拥有PC(J2SE)以及Android两个开发版本。 jPCT的最大优势之一,就在于它惊人的向下兼容性。 项目地址:http://code.google.com/p/alien3d/ 8、Catcake Catcake是一款跨平台的Java 3D图形引擎,目前支持PC(J2SE)及Android环境运行(已有

    4.9K30发布于 2019-02-19
  • 来自专栏java一日一条

    InnoDB引擎算法和优化

    1 innodb存储引擎介绍 innodb存储引擎支持两种常见的索引:B+树索引和哈希索引。 innodb支持哈希索引是自适应的,innodb会根据表的使用情况自动生成哈希索引。 聚集索引 Innodb存储引擎表是索引组织表,即表中数据按主键顺序存放。而聚集索引就是按每张表的主键构造一颗B+树。并且叶节点存放整张表的行记录数据。每张表只能有一个聚集索引(一个主键)。 叶级别不包含行的全部数据,叶级别除了包含行的键值以外,每个索引行还包含了一个书签(bookmark),该书签告诉innodb存储引擎,哪里可以找到与索引对应的数据。 DROP PRIMARY KEY | DROP {INDEX|KEY} index_names DROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name 算法 同时要考虑插入B+树的三种情况,每种情况都可能导致不同的插入算法。如下表所示: ? B+树插入的3种情况 我们实例分析B+树的插入,在图1的B+树中,我们需要插入28这个值。

    1K10发布于 2018-12-06
  • 来自专栏向治洪

    Google V8引擎

    引擎 前面,我们介绍了V8引擎的一些历史,下面我们重点来看看V8项目一些知识。 V8引擎渲染过程 V8引擎在执行JavaScript的过程中,主要有两个阶段:编译和运行。 垃圾回收 V8 使用了分代和大数据的内存分配,在回收内存时使用精简整理的算法标记未引用的对象,然后消除没有标记的对象,最后整理和压缩那些还未保存的对象,即可完成垃圾回收。 在V8中,使用较多的是年轻分代和年老分代。年轻分代中的对象垃圾回收主要通过Scavenge算法进行垃圾回收。在Scavenge的具体实现中,主要采用了Cheney算法。 Cheney算法:通过复制的方式实现的垃圾回收算法。它将堆内存分为两个 semispace,一个处于使用中(From空间),另一个处于闲置状态(To空间)。当分配对象时,先是在From空间中进行分配。

    2K50发布于 2018-01-26
  • 来自专栏程序员互动联盟

    【专业技术】引擎算法探究

    大于3维的空间我们想象不出来,但是算法是一样的。 如果我们有下面的数据 ? 那么通过用欧式距离公式可知: 《机器学习》与《python编程》的距离= ? 0, 0, 1, 1], [1, 1, 1, 2, 0], [2, 2, 2, 0, 0], [1, 1, 1, 0, 0], [5, 5, 5, 0, 0]] 推荐引擎 similarity * userRating if simTotal == 0: return 0 else: return ratSimTotal/simTotal #预计得分 推荐引擎代码 ''' 推荐引擎: 给用户推荐N个最喜欢的课程 input ds: 评价矩阵 userIdx: N: 最高推荐N个结果 simFunc estFunc ''' 局限 * 这个算法需要对整个数据集进行多次复杂的计算,如果数据量很大,则性能可能无法接受。一种解决办法是对矩阵进行SVD分解,把高维度的矩阵转换成低维度度的矩阵。

    90790发布于 2018-03-16
  • 来自专栏Nicky's blog

    JDK8系列之JavaScript引擎Nashorn

    从JDK1.8开始,Java采用Nashorn作为嵌入式 JavaScript 引擎。JDK1.6和JDK1.7采用Rhino。

    1.9K30编辑于 2022-09-21
  • 来自专栏Nodejs技术栈

    Javascript 引擎 V8 7.7 版本发布

    作者: afterer 链接: https://www.oschina.net/news/109069/v8-7-7-released JavaScript 引擎 V8 发布了 7.7 版本,目前处于测试阶段 为了减少 V8 的内存使用量,现在只在函数执行了一定数量的字节码之后才分配反馈向量。这避免了为没有从已收集反馈中受益的短期函数分配反馈向量。 实验表明,延迟分配反馈向量可以节省约 2-8% 的 V8 堆大小。 ? 对于 Chrome 用户来说,V8 的堆大小在桌面版上减少了 1-2%,在移动平台上减少了 5-6%。 根据使用的线程数,与 V8 的 7.4 版本相比,编译所需时间不到一半。 ? ? Stack trace 改进 几乎所有由 V8 引发的错误在创建时都会捕获跟踪栈信息。 详情见发布说明:https://v8.dev/blog/v8-release-77

    88430发布于 2019-08-20
  • 来自专栏WecTeam

    V8 引擎和 JavaScript 优化建议

    原文地址:https://alligator.io/js/v8-engine/[1] 翻译:马雪琴 V8 是谷歌用于编译 JavaScript 的引擎,Firefox 同样也有一个,叫 SpiderMonkey V8 引擎的一些基础点: 用 C++ 语言实现,使用在 Chrome 浏览器和 Node.js 中(以及最新版的 Microsoft Edge) 遵循 ECMA-262 标准 JavaScript 旅程 当我们把压缩、混淆以及做了各种处理的 JavaScript 放到 V8 引擎中解析时,到底发生了些什么? 对象 谈到对象,V8 引擎底层有个类型系统可以区分它们: 单态 对象具有相同的键,这些键没有区别。 里的不同对象,接下来看看 V8 引擎是如何优化对象的。

    1.1K20发布于 2019-12-16
  • 来自专栏京程一灯

    更轻量级的 V8 引擎

    在 2018 年末,为了大幅减少 V8 的内存使用量,我们启动了一个名为 V8 Lite 的项目。 但是在进行这项工作的过程中,我们意识到为Lite 模式所做的许多内存优化都可以转移到常规 V8 中,从而使 V8 的所有用户受益。 Lite 模式 为了优化 V8 的内存使用,我们首先需要了解 V8 如何使用内存以及哪些对象类型在 V8 堆中占了很大的比例。 我们用了 V8 的内存可视化【https://v8.dev/blog/optimizing-v8-memory#memory-visualization】工具来跟踪许多典型网页的堆内容的构成。 ? 通过配置现有的 V8 设置,可以对精简模式进行许多更改,例如禁用 V8 的 TurboFan 优化编译器。但是其他的优化还需要对 V8 进行更多的修改。

    1.7K20发布于 2019-09-30
  • 来自专栏vivo互联网技术

    JavaScript 引擎 V8 执行流程概述

    这里不涉及到如何编写优秀的前端,只是对JS内部引擎技术的讲解。 一、V8来源 V8的名字来源于汽车的“V型8缸发动机”(V8发动机)。V8发动机主要是美国发展起来,因为马力十足而广为人知。 V8引擎的命名是Google向用户展示它是一款强力并且高速的JavaScript引擎。 V8未诞生之前,早期主流的JavaScript引擎是JavaScriptCore引擎。 据说Google是不满意JavaScriptCore和Webkit的开发速度和运行速度,Google另起炉灶开发全新的JavaScript引擎和浏览器内核引擎,所以诞生了V8和Chromium两大引擎, 二、V8的服务对象 V8是依托Chrome发展起来的,后面确不局限于浏览器内核。发展至今V8应用于很多场景,例如流行的nodejs,weex,快应用,早期的RN。 三、V8的早期架构 V8引擎的诞生带着使命而来,就是要在速度和内存回收上进行革命的。JavaScriptCore的架构是采用生成字节码的方式,然后执行字节码。

    1.5K21发布于 2019-12-16
  • 来自专栏全栈程序员必看

    javascript引擎PK:V8 vs Spidermonkey

    Nodejs是什么,一个基于chrome的javascript V8引擎的platform,特点是事件驱动,异步非阻塞IO模型,轻量。 之所以是个引子,正由于它是基于V8引擎的,而让我感叹V8的威力时,不由想到另外一个firefox的JS引擎SpiderMonkey,进而忍不住想PK一下他们的性能。 说明下PK用的环境吧, 1. 备注:本来是想通过V8和SpiderMonkey原生C/C++库来运行js代码进行测试的,那样结果应该更客观,V8环境调试运行都成功了,但是SpiderMonkey编译后,运行测试代码时显示加载dll失败了 各个测试结果都显示V8在性能上比当前版本的Spidermonkey要出色很多。 2. 在Linux及多核计算能力一般的CPU环境下,异步非阻塞IO的V8性能优势非常大。 3. Dict字典操作上,优势没有其他两项明显,说明V8在字典操作上的优化还有待进一步提高。期待后续新版本V8在这一项上性能的进一步优化。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    1.4K21编辑于 2022-11-03
  • 来自专栏藏经阁

    【JavaScript运行原理之V8引擎】V8引擎解析JavaScript代码原理

    但是现在的JS编译引擎都使用了运行时编译,在运行时阶段生成机器代码,而不是提前生成,这就是把代码的运行和生成机器代码同时执行,在运行阶段收集变量的类型信息,然后根据这些信息编译生成机器代码,然后直接使用这些机器代码 JavaScript引擎 JS作为一门高级语言,它被CPU执行之前,需要通过某种程序将js转换成机器语言并执行,这种程序就是JavaScript引擎。 这是一个简化流程,在不同JS引擎中表现会有一定的差异。 5. 什么是V8引擎 V8 是一个接收JavaScript代码,并编译代码,执行代码的一个C++程序,编译后的代码可以在多种操作系统,多种处理器上运行。 V8的工作:编译执行js代码、处理调用栈、内存分配、垃圾回收。 6. V8如何编译执行js代码 一般引擎在编译执行js代码都会用到3个重要的组件:解析器、解释器、编译器。

    78220编辑于 2023-03-11
  • 规则引擎开发现在已经演化成算法引擎

    Together规则引擎的基本结构规则引擎就是个程序,它用专家的知识来解决问题,给出答案。它也叫基于规则的管理系统或者决策管理系统DRMS。推理算法就是规则引擎的大脑,它管理着一大堆规则和事实。 规则引擎推理算法原理Rete 算法:这是一种高效的模式匹配算法,广泛用于专家系统和规则引擎中。它通过构建一个网络结构,减少重复匹配的计算,提高处理大量规则和数据的效率。 Rete 算法及其衍生算法Rete-II、Rete-III、Rete-NT、Rete-OO,是为规则引擎推理算法而生,历史悠久,而且不断迭代演进。主流厂商的规则引擎大都采用Rete 算法及其衍生算法。 因此Rete 算法已经成为行业的事实标准。规则引擎适用场景规则引擎主要用于执行基于条件的业务规则判断和决策,而不是实现通用逻辑算法。 拒绝匹配拥抱算法Together规则引擎抛弃了传统规则引擎线性匹配的规则建模方式,但它包含了传统规则引擎

    38810编辑于 2025-09-04
  • 来自专栏用户6109341的专栏

    影响搜索引擎排名8大因素

    影响搜索引擎排名8大因素: 1、服务器:即网站存储空间(是否被惩罚或稳定及速度) 2、网站导航结构 3、域名和文件名 4、网页标签的设置(Title、keywords、discription) 5、优秀网页的内容 (一般都是伪原创) 6、关键词在网页中的密度(一般为2%~8%) 7、反链(友情链接及在论坛、贴吧、博客、知道发布的有关网站的连接都算) 8、robots.txt文件(这个是禁止搜索引擎收录的)

    91510发布于 2021-07-19
  • 来自专栏乐行僧的博客

    8-快速排序算法

    一些关键点: 不稳定的排序算法 初始状态待排序序列基本有序,快速排序的时间复杂度为O(n^2),性能非常差 空间复杂度与递归树的高度成正比,平均来看是O(log2n) 划分函数的选择非常重要 优化,随机划分 QuickSort(a, l, p - 1); QuickSort(a, p + 1, r); } int main() { int a[] = {3, 1, 2, 4, 7, 0, 5, 8,

    25330编辑于 2022-02-25
  • 来自专栏算法工程师之路

    每日算法题:Day 8

    作者:TeddyZhang,公众号:算法工程师之路 Day 8, C/C++知识点走起~ 1 编程题 【剑指Offer】翻转链表 输入一个链表,反转链表后,输出新链表的表头。 nullptr; return newHead; } }; 如果不使用额外的空间的话,我们可以使用两个指针pre和next, 对链表相邻的两个节点进行交换调整,这才是面试官想要看到的算法

    46920发布于 2019-08-09
  • 来自专栏前端精读评论

    100.精读《V8 引擎 Lazy Parsing》

    引言 本周精读的文章是 V8 引擎 Lazy Parsing,看看 V8 引擎为了优化性能,做了怎样的尝试吧! 这篇文章介绍的优化技术叫 preparser,是通过跳过不必要函数编译的方式优化性能。 从 V8 v5.7 / Chrome 57 开始,还会识别 uglifyJS 的 ! 然而在浏览器引擎解析环境比较复杂,很难对函数进行完整字符串匹配,因此只能对函数头进行简单判断。 也有一些代码辅助转换工具帮助 V8 正确识别,比如 optimize-js,会将代码做如下转换。 转换前: ! 总结 JS 解析引擎在性能优化做了不少工作,但同时也要应对代码编译器产生的特殊 IIFE 闭包,防止对这种立即执行闭包进行重复 parser。

    41930编辑于 2022-03-14
  • 来自专栏京程一灯

    V8 引擎发布了 v8.0

    V8 每六个星期发布一个版本,每当我们发布一个版本时,就会出现有关当 V8 到版本 8 时会发生什么的问题。举行一个派对?我们会提供一个新的编译器吗? 我们是否会跳过版本 8 和 9,而使 V8 停留在永恒的某个版本 X 中? ? 经过超过 10 年【https://v8.dev/blog/10-years】的工作,在我们的第 100 篇博客文章中,很高兴地宣布我们的最新分支 V8version 8.0V8 发布了【https:/ 在 V8 堆中包含了一整套项目,例如浮点值,字符串,编译的代码和各种标记值(代表指向 V8 堆的指针或者小整数)。我们通过检查堆,发现这些标记的值占据了堆的很大部分! 原文:https://v8.dev/blog/v8-release-80

    95820发布于 2019-12-26
  • 来自专栏前端杂货铺

    判断js引擎是javascriptCore或者v8

    来由   纯粹的无聊,一直在搜索JavaScriptCore和SpiderMonkey的一些信息,却无意中学习了如何在ios的UIWebView中判断其js解析引擎的方法: if (window.devicePixelRatio st === 'function%20javaEnabled%28%29%20%7B%20%5Bnative%20code%5D%20%7D') { document.write('V8 } } else { document.write("Not a WebKit browser"); }   只需上述一串代码,在ios中自然是JavaScriptCore的内核,在安卓下是v8引擎 目前有三种方案实现oc与js通信,第一种继续使用cordova的通信机制,也就是目前比较流行的UIWebView;第二种采用React Native的通信机制,使用iOS7内置的javascriptCore引擎并在 3, 综上三种方案,第一种代价最低,而且流程比较完善,而且已经系统化,但是性能是硬伤;第二种则是非常好的借鉴,RN的方式不仅仅适用于javascriptCore,而且也适用于其他引擎如SpiderMonkey

    4K50发布于 2018-03-15
领券