67677新澳门手机版 > 新澳门手机版mg游戏 > V8 发布 v8
V8 发布 v8
2020-03-14 20:32

V8 发布了 8.0 版本,此版本除了修复一些 bug,毫无疑问又带来了性能的提高。目前是预览,正式版将于几个星期后随 Chrome 80 Stable 一起发布。

我的一天 V1.1.2,我的一天v1.1.2

App Store: 我的一天:写故事应用

 

新澳门手机版mg游戏 1 

虽然版本号小,但是改动还是很大的。

 

  1. 新增写作提醒功能

  2. 优化动画,体验更流畅

  3. 优化颜色,各种颜色搭配更协调

 

App Store: 我的一天:写故事应用

V1.1.2,我的一天v1.1.2 App Store: 我的一天:写故事应用 虽然版本号小,但是改动还是很大的。 1. 新增写作提醒功能 2. 优化动画,体...

时间: 2019-03-26阅读: 275标签: 引擎

问题:为何充电电池不是1.5V是1.2v,而干电池是1.5v?

新澳门手机版mg游戏 2

JavaScript 引擎 V8发布了 7.4 版本,目前处于 beta 阶段,正式版将于几个星期后与 Chrome 74 Stable 一起发布。

回答:

性能改进

先看看性能改进,这包括内存占用减少与速度提升:

指针压缩

V8 堆包含整个项目所有东西,例如浮点值、字符串字符、编译的代码和标记值(tagged values),标记值代表指向 V8 堆的指针或小整型,开发团队发现这些标记值占据了堆的大部分空间。

标记值与系统指针一样大,对于 32 位架构来说,它们的宽度为 32 位,而在 64 位架构中,则为 64 位。在将 32 位版本与 64 位版本进行比较时,为每个标记值使用的堆内存是原来的两倍。

此版本通过一个方法减小了这一块内存:指针压缩。因为高位可以由低位合成,只需要将唯一的低位存储到堆中即可节省内存资源,经过测试,平均节省了 40% 的堆内存。

新澳门手机版mg游戏 3

通常在减少内存的同时,也会牺牲速度性能,但是经过这一改进,V8 及其垃圾收集器中,都能够看到真实网站性能的提升。

新澳门手机版mg游戏 4

新澳门手机版mg游戏,优化高阶内置程序

此版本消除了 TurboFan 优化管道中的一个限制,该限制阻止了对高阶内置函数的优化。

const charCodeAt = Function.prototype.call.bind(String.prototype.charCodeAt);

charCodeAt(string, 8);

charCodeAt 对 TurboFan 的调用是完全不透明的,从而导致生成对用户定义函数的通用调用。通过此更改,现在可以识别出实际上是在调用内置 String.prototype.charCodeAt 函数,从而能够触发 TurboFan 库存中所有的进一步优化来改善对内置函数的调用,进而获得与以下代码相同的性能:

string.charCodeAt(8);

此版本带来了一些新特性,并极大提升了性能。

鼠标、玩具汽车中用的干电池不管是5号还是7号一般都是1.5V的,而可充电的电池标称电压一般都是1.2V。电池标称电压的多少都是由正极材料决定的。干电池和可充电电池的正极材料是不一样的。

JavaScript

JavaScript 特性方面也有所变化,带来了两个新特性:

Optional Chaining

在编写属性访问链时,开发者经常需要检查中间值是否为空(null 或 undefined),这样可能会写出很冗长的显式错误检查链。

// Error prone-version, could throw.
const nameLength = db.user.name.length;

// Less error-prone, but harder to read.
let nameLength;
if (db && db.user && db.user.name)
  nameLength = db.user.name.length;

Optional Chaining(?.)使开发者可以编写更可靠的属性访问链,以检查中间值是否为空。如果中间值是空值,则整个表达式的计算结果为 undefined。

// Still checks for errors and is much more readable.
const nameLength = db?.user?.name?.length;

同时,除了静态属性访问之外,Optional Chaining 还支持动态属性访问和调用。

null 合并(Nullish Coalescing)

另一个与 Optional Chaining 很接近的特性是 null 判断合并(Nullish Coalescing),由特定的 Nullish Coalescing 操作符 ?? 启用,它是一个新的短路二元运算符。

现在有时会使用逻辑 || 运算符处理默认值,例如:

function Component(props) {
  const enable = props.enabled || true;
  // …
}

运算 a || b,当 a 为非真时结果为 b,如果 props.enabled 本身显式设置为“false”,那么这样的运算还是会得到第二个运算数“true”,也就是 enable = true。

现在使用 null 合并运算符 ??,当 a 为空,也就是 null 或者 undefined 时,a ?? b 的运算结果为 b,否则为 a,这样的默认值处理行为才是符合逻辑的,弥补了前边讲到的问题。

function Component(props) {
  const enable = props.enabled ?? true;
  // …
}

同时,null 合并运算符和 Optional Chaining 是辅助功能,可以很好地协同工作。它们可以进一步处理上述示例中没有任何 props 参数传入的情况。

function Component(props) {
  const enable = props?.enabled ?? true;
  // …
}

此外,API 有一些变化,可以通过以下方式查看:

git log branch-heads/7.9..branch-heads/8.0 include/v8.h

更新说明:

(文/开源中国)    

JIT-less V8

普通干电池为什么标称电压是1.5V

电池都是由化学材料发生化学反应来放电给用户提供电量的,电池正极材料决定了标称电压的大小。普通干电池的常用正极材料有:碱性锌锰、锌锰、碳锌等,他们的标称电压都是1.5V,这也是普通电池的电压为1.5V的原因。

新澳门手机版mg游戏 5

只要电池的正极材料一样,那么它的标称电压就是一致的,不会因为体积大小而不同。比如,同样正极材料的5号、7号电池,其电压都是一样的。

V8 现在不需要运行时分配可执行内存就可以执行JavaScript,关于这个新特性的具体细节,之前我们有报导过:V8 新机制:JIT-less 模式。

可充电电池为什么是1.2V

可充电电池其化学材料是可以循环使用的,常用的1.2V的可充电材料有镍氢和镍镉等,用这类材料做成的电池其标称电压都是1.2V的。

新澳门手机版mg游戏 6

并不是所有的可充电电池都是1.2V,除此之外还有1.6V可充电的镍锌电池、3.7V的聚合物锂离子电池等。

以上就是这个问题的回答,感谢留言、评论、转发。更多精彩内容请关注本头条号: style="font-weight: bold;">玩转嵌入式。感谢大家。

WebAssembly Threads/Atomics

在非 Android 操作系统上启用了 WebAssembly Threads/Atomics,可以通过 chrom://flags/#enable-webassembly-threads 在 Chrome 中启用此功能。

上一篇:Dao平台开发路线图 下一篇:没有了