美文网首页
为什么js引擎是单例

为什么js引擎是单例

作者: 刘程源 | 来源:发表于2019-01-19 17:53 被阅读0次

    函数就是黑盒

    一段函数,本身就是一个黑盒工厂,输入即原料,输出即产品

    工厂分两种,加工型和生产型

    生产型
    原料拥有不可变性,可变的只有产品
    比如水电燃这些通用原料,私自修改整体走向,会引起后续工厂的彻底混料
    即只可以用,不可以改

    此处指配置信息,回掉函数等

    加工型
    原料 == 产品
    原料不可变的返例

    在本例中,js引擎为工厂,原料为html具有两种模式
    加工型 ->html操作
    生产性 ->无html操作

    多核需要指示灯

    多个黑盒操作同一原料,这个模型类似与火车与轨道

    轨道是原料,火车是工厂
    每条轨道的运行只有一个方向,对轨道而言同一时间只能过一条火车
    单个火车毫无问题,如何设计多个火车路段?
    如果只是保证轨道运行不重复,那么轨道长度/火车长度 是否为最大运行火车运行数量?
    当然不是火车运行具有安全距离,即当此时该轨道通过时,意味着前方Nm内都无火车运行,这里的设计就是指示灯,当火车通过是,指示灯红色,表示以下路段有车,请等待,当该路段火车通过后,指示灯绿色,表示该路段无车,可通过

    总之,信号指示灯,肯定是成双成对出现的
    而这个指示灯,就是程序中的锁

    js引擎与渲染引擎的关系

    一前一后两辆火车,没有指示灯
    js对原料加工完毕后,渲染在对原料进行再次加工

    如何实现多核

    追加指示灯设计即可,使原料html可以分段执行,这意味着需要语法上的描述,即在语法上描述出,当前函数只操作如下html,且绝对操作范围外的html,意味着无法全局追加html

    虽然恶心,但不能说不能

    多厂设计的必要性

    假设fps=60,每次渲染操作需要16ms内完成,针对16ms以内无意义,针对16ms以上,操蛋的语法难度可能会使以前的轨道全部重铺

    题外话1. js引擎比较贵

    在事件工厂中,收到指示后,是否可以执行建立一个js引擎部门对js进行处理?
    当然不能,这个部门比你全公司都大,即js引擎很贵,全局有且只有一个

    题外话2. js引擎处理使用率不高

    js引擎的目的使修正html,展示丰富的页面,最终停留在让人看上,针对一个页面,如果不是做动画效果,js引擎工厂的出勤率不高

    花大价钱整一个出勤率不高的厂,性价比太低,难道要动态新增销毁不成

    js多作坊设计

    js引擎将内部作坊分两种,加工型和生产型
    生产型不依赖html,可单独执行
    即追加内部生产型作坊,其余依然由总部处理
    此时js工厂如下执行

    针对html加工,针对无html处理,丢给生产作坊处理,html处理完成后,丢个渲染工厂
    生产性作坊处理完后,重新丢个js厂

    即对是否进行html操作做细分,以达到多厂的目的

    将厂理解为线程等性质一样

    总之

    有内部解决方案,整体没有必要

    相关文章

      网友评论

          本文标题:为什么js引擎是单例

          本文链接:https://www.haomeiwen.com/subject/osdzdqtx.html