微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一个网页在达到CPU指令之前会被解释多少次?

如何解决一个网页在达到CPU指令之前会被解释多少次?

所以当今的网站有很多很多抽象层,我认为这是非常低效的。

说用React创建一个网站。

React将React代码(即jsx bs)解释为javascript。加上框架本身。那就是2层。

然后,浏览器将javascript解释为其他内容。但是呢我很确定没有cpu指令,因为那样就不会那么慢。 所以我的问题是,下一个,下一个和下一个是什么,直到最低级别的cpu指令为止。

解决方法

React将React代码(即jsx bs)解释为javascript。加上框架本身。那就是2层。

您忘记了与纯文本之间的转换(例如,具有可接受的错误检测/报告功能的解析非常昂贵)。转换更像是:

  • 纯文本-> React的内部表示形式
  • React的内部表示-> JavaScript的内部表示
  • JavaScript的内部表示形式->纯文本
  • 纯文本-> JavaScript的内部表示形式

然后,浏览器将javascript解释为其他内容。但是呢?

浏览器要么解释代码(例如“ switch(get_next_token()) { case ... }`,要么(如果尚未缓存)将代码转换为本机代码,并在执行之前将结果缓存下一次,或者两者的混合(例如,只有在多次执行一个片段时才转换为原生)。

在最佳情况下(如果多次执行一段代码,则仅转换为本机,如果无论如何仅执行一次代码,则避免转换和优化的成本),结果仍然很慢,因为它通常适用于小块代码,并且无法花时间进行优化,而且由于语言功能(“鸭子打字”,eval())使得将JavaScript转换为高性能的本机代码几乎是不可能的。

我认为这效率很低。

是的。但是:

  • HTTP本身很糟糕(没有“这是您想要的一个不错的清单/文件列表”,因此浏览器可以在解析HTML之前就开始提取它们)

  • 对于大多数(HTML,CSS),不是说“一切都必须是UTF-8”,而是有人决定每个浏览器都需要支持每种字符编码并在各处进行字符集编码/解码,然后才能开始解析。

  • CSS的添加意味着浏览器需要2个文件而不是1个文件(并且直到...才知道CSS的文件)。

  • HTTP曾经具有缓存,但是Web开发人员决定必须动态生成所有内容,并破坏所有代理缓存。因此现在所有内容都必须拖到世界各地,而不是来自快速的本地缓存。

  • 有人认为应该对所有内容进行加密(即使是没有任何登录或安全要求的东西,也可以发送给世界上任何匿名人员),这样会增加一堆加密/解密开销。 >

  • 许多网站的商业模式是“让垃圾邮件散布在人们的面前,并假装它是免费的”;导致大量不必要的图形数据被泵送(增加了互联网成本并降低了带宽/速度),和/或导致了广告拦截器的额外开销。

换句话说; (对于大多数没有劫持您的浏览器进行比特币挖矿的网站等),React / Javascript的低效率被其他所有事物的低效率所淹没。 ;-)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。