当前位置: 首页 > news >正文

厦门制作网站哪家好网站建设概念

厦门制作网站哪家好,网站建设概念,114啦网址导航官网,ppt模板免费下载 素材熊猫办公本文讨论了一种名为 WasmGC 的新方法#xff0c;用于将垃圾收集编程语言有效地引入 WebAssembly。 WasmGC 定义了新的 GC 类型#xff0c;例如结构和数组#xff0c;与之前编译为线性内存的方法 (WasmMVP) 相比#xff0c;它们可以实现更好的优化#xff1a; 在编译时和…本文讨论了一种名为 WasmGC 的新方法用于将垃圾收集编程语言有效地引入 WebAssembly。 WasmGC 定义了新的 GC 类型例如结构和数组与之前编译为线性内存的方法 (WasmMVP) 相比它们可以实现更好的优化 在编译时和运行时进行优化例如间接调用的推测内联。性能测量结果表明推测性内联可使编译后的 Java 代码显著提速 30%。WasmGC 比 WasmMVP 更可优化因为它在更高级别上运行跟踪对象引用。虽然 WasmGC 可能需要在某些语言的语义上做出妥协但它可以提供更小的代码大小和更好的性能等好处。WasmGC 现在已成为一种标准并在浏览器中得到支持从而实现了在 WebAssembly 中实现语言的新方法并且具有比传统编译器方法更好的性能潜力。 Java、Kotlin、Dart、Python 和 C# 等 GC 语言移植到 Wasm 主要有两种方法 WasmMVP“传统”移植方法即将该语言的现有实现编译为 WasmMVP即 2017 年推出的 WebAssembly 最小可行产品。WasmGC其中语言被编译为 Wasm 本身的 GC 构造这些构造在最近的 GC 提案中定义。 WasmMVP通常如何移植到新硬件架构 比如说Python想要运行在ARM架构上或者Dart想要运行在MIPS架构上。总体思路是将虚拟机重新编译为该架构。 除此之外如果虚拟机具有特定于体系结构的代码例如即时 (JIT) 或提前 (AOT) 编译那么您还可以为新体系结构实现 JIT/AOT 后端。 Wasm 是一个低级编译器目标因此可以使用传统的移植方法也就不足为奇了。自从 Wasm 首次启动以来我们在许多情况下都在实践中看到了这种效果例如用于 Python 的 Pyodide和用于 C# 的 Blazor请注意Blazor 支持[AOT](https://learn.microsoft.com/en-us/aspnet/core/blazor/host-and-deploy/webassembly?viewaspnetcore-7.0ahead-of-time-aot-compilation)和JIT编译因此它是上述所有内容的一个很好的示例。 在所有这些情况下该语言的运行时被编译为 WasmMVP就像编译为 Wasm 的任何其他程序一样因此结果使用 WasmMVP 的线性内存、表、函数等。它很有意义因为您可以重用几乎所有现有的 VM 代码包括语言实现和优化。 然而事实证明这种方法有几个 Wasm 特有的缺点而这正是 WasmGC 可以提供帮助的地方。 WasmGC 移植新方法 简而言之WebAssembly 的 GC 提案“WasmGC”允许您定义结构体和数组类型并执行操作例如创建它们的实例、读取和写入字段、在类型之间进行转换等。有关更多详细信息请参阅提案概述。 这些对象由 Wasm VM 自己的 GC 实现来管理这是该方法与传统移植方法之间的主要区别。 如果传统的移植方法是将一种语言移植到一种架构那么 WasmGC 方法与如何将一种语言移植到一个虚拟机非常相似。 例如如果您想将 Java 移植到 JavaScript那么您可以使用像J2CL这样的编译器它将 Java 对象表示为 JavaScript 对象然后这些 JavaScript 对象就像所有其他对象一样由 JavaScript VM 管理。 现在我们已经了解了 GC 语言的两种移植方法是什么让我们看看它们如何比较。 运送内存管理代码 WasmGC 让虚拟机自动为我们管理内存因此我们在Wasm 中根本不需要malloc/free内存管理代码既不需要 GC也不需要内存管理代码。 循环收集 在浏览器中Wasm 经常与 JavaScript 进行交互并通过 JavaScript 与 Web API 进行交互但在 WasmMVP 中甚至在引用类型提案中Wasm 和 JS 之间无法建立双向链接从而无法以细粒度的方式收集循环。指向 JS 对象的链接只能放在 Wasm 表中而指向 Wasm 的链接只能将整个 Wasm 实例作为一个单独的大对象来引用。这不足以有效地收集特定的对象周期其中一些恰好位于已编译的 VM 中一些位于 JavaScript 中。 而使用 WasmGC我们定义了 VM 可以识别的 Wasm 对象因此我们可以在 Wasm 和 JavaScript 之间进行正确的引用。 堆栈上的 GC 引用 目前只有 WasmGC 可以无开销地处理堆栈引用并且由于 Wasm VM 负责 GC因此它完全自动执行此操作。 GC效率 一个相关的问题是执行 GC 的效率。在这方面两种移植方法都有潜在的优势。传统的移植方式可以重复使用现有虚拟机中的优化功能这些优化功能可能是为特定语言量身定做的例如重点优化内部指针或短寿命对象。 另一方面在Web上运行的 WasmGC 移植的优势在于它可以重复使用所有为使 JavaScript GC 快速而做的工作包括生成 GC、增量收集等技术。WasmGC 还将 GC 交给虚拟机处理从而简化了高效写入障碍等工作。 WasmGC 的另一个优势是GC 可以感知内存压力等情况并相应地调整堆大小和收集频率这与 JavaScript 虚拟机在网络上的做法如出一辙。 内存碎片 随着时间的推移特别是在长期运行的程序中对 WasmMVP 线性内存进行 malloc/free 操作可能会导致内存碎片。 这种碎片化会迫使 Wasm 模块更频繁地增长内存从而增加开销并可能导致内存不足错误目前正在设计改进措施但这是一个具有挑战性的问题。这是所有 WasmMVP 程序都会遇到的问题包括传统的 GC 语言移植注意GC 对象本身可能是可移动的但运行时本身的部分却不是。 而 WasmGC 则避免了这一问题因为内存完全由虚拟机管理虚拟机可以移动它们来压缩 GC 堆避免碎片化。 开发工具集成 在传统的 WasmMVP 移植中对象被放置在线性内存中开发工具很难提供有用的信息因为这些工具只能看到字节而没有高级类型信息。 而在 WasmGC 中虚拟机管理 GC 对象因此可以更好地集成。例如在 Chrome 浏览器中您可以使用堆剖析器来测量 WasmGC 程序的内存使用情况 语言语义 在 WasmGC 中我们定义了新的 GC 类型--结构体和数组--并编译成它们。因此我们不能简单地将用 C、C、Rust 或类似语言编写的虚拟机编译成这种形式因为这些语言只能编译成线性内存所以 WasmGC 无法帮助绝大多数现有的虚拟机代码库。在 WasmGC 移植中您通常需要编写新代码将您的语言结构转换为 WasmGC 基元。 https://www.jdon.com/69581.html
http://www.hkea.cn/news/14476137/

相关文章:

  • 蓝色机械企业网站模板网站建设过程与思路
  • 网站建设wang.cd杭州二建建设有限公司网站
  • 北戴河网站建设asp 网站建设教程
  • 聊城的网站制作公司内部网站建设软件
  • 青岛爱城市网app官方网站化妆品网站的建设方案
  • 网站架构推荐网站建设的主要职责
  • 万网域名查询兰州网站seo技术厂家
  • aspcms网站地图深圳百度推广优化
  • 福州做网站需要多少钱网站建设要准备什么资料
  • 网站建设实践总结搭建微擎网站后怎么做微官网
  • 微商网站怎么做wordpress编辑小工具代码
  • 学网站建设 去那里外汇跟单网站建设
  • 网站需求分析的重要爱站查询工具
  • 长沙专业的建站按效果付费上网建站推广
  • 网站建设与网页设计难学吗湘潭市建设局网站
  • 自己做优惠券网站凤翔网站制作
  • 蛋糕店微网站列举免费域名注册的网站
  • 安徽响应式网站推荐网页美工培训学校
  • 模板建站符合哪些工作需求?大连企业网站排名优化
  • 新手建站教程报价单如何用公众号做网站
  • 网站建设登录界面设计步骤建筑安全网
  • 南京做网站南京乐识好国外最新设计产品
  • 受欢迎的天津网站建设同ip多域名做网站
  • 大淘客做的网站打不开网站app简单做
  • 秦淮网站建设品牌推广语
  • 郑州网站建设培训短期班北京营销型网站建设
  • 营销型网站建设推荐乐云seo深圳办公室装修公司哪家好
  • 网站上微信支付功能网页设计宣传海报素材
  • 为什么找别人做网站湘潭网站建设 磐石网络实惠
  • 品牌网站建设费用要多少珠海网站建设报价