Skip to content

Commit

Permalink
更新性能数据
Browse files Browse the repository at this point in the history
  • Loading branch information
pirunxi committed Mar 28, 2024
1 parent b53f3a1 commit 5e2c309
Show file tree
Hide file tree
Showing 16 changed files with 1,691 additions and 595 deletions.
1,005 changes: 782 additions & 223 deletions docs/basic/performance.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
# 高级指令优化
# 离线指令优化

:::warning
高级指令优化尚在开发中。

离线指令优化技术正开发中,目前仅可使用标准指令优化技术。
:::

高级指令优化技术是独立于标准指令优化技术的实现。高级指令优化技术使用更丰富的编译优化技术,极大提升了解释模块的性能。
离线指令优化(Offline Instruction Optimization,简称OIO)离线将原始IL指令转换为自定义的寄存器指令。
由于离线没有编译性能限制,可以使用更丰富的编译优化技术,极大提升了解释模块的性能。

优化后的指令执行性能整体提升100%-1000%(没看错,10倍以上)甚至更高,尤其是数值指令整体提升近300%。
而且由于已经提前转换,加载和指令翻译过程更快,卡顿更小。

离线指令优化技术支持代码加固方案中的虚拟化技术,极大提升了代码安全。

## 实现

高级指令优化技术包含了以下优化技术
离线指令优化技术包含了以下优化技术

- 彻底的无用栈指令消除。消除掉所有不必要的栈操作
- 窥孔优化
Expand All @@ -28,4 +33,3 @@
## 性能

TODO。

50 changes: 0 additions & 50 deletions docs/business/basiccodeoptimization.md

This file was deleted.

34 changes: 34 additions & 0 deletions docs/business/basicoptimization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 解释执行优化

目前仅可使用标准解释执行优化技术,[离线指令优化](./advancedoptimization)技术还在开发中。

## 标准指令优化技术

标准指令优化技术为运行时优化技术。对常见的代码范式进行谨慎可靠的优化,大幅提升了变量访问、数值计算、对象访问等常见指令的性能,像一些特殊代码如typeof指令的性能,提升了1000%以上。

**商业版**大幅提升了数值计算性能,其性能是社区版本的 **280%-735%**

以下是OnePlus 9R ArmV8 实机测试报告,测试代码附录最后。

### AOT耗时 vs 商业化版本耗时 vs 社区版本耗时 (越小越好)

![data](/img/benchmark/numeric_datas.jpg)

### 商业化版本耗时/AOT耗时 vs 社区版本耗时/AOT耗时 (越小越好)

AOT版本性能是社区版本的`4.1 - 90`倍,是商业化版本的`1.30 - 12.9`倍。

![data](/img/benchmark/numeric_business_vs_aot_div_aot.jpg)


### 商业化版本性能/社区版本性能 (越大越好)

商业化版本性能是社区版本的`2.87-7.35`倍。

![data](/img/benchmark/numeric_dialog_business_div_community.jpg)

### 商业化版本性能/AOT版本性能 (越小越好)

AOT版本性能是是商业化版本的`1.30 - 12.9`倍。

![data](/img/benchmark/numeric_dialog_business_div_community.jpg)
4 changes: 2 additions & 2 deletions docs/business/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

目前有三个商业化版本,具体特性对比如下:

- [专业版](./pro/intro.md)优化了性能、内存,提供更高的代码安全
- [专业版](./pro/intro.md)显著提升了[解释执行性能](./basicoptimization)(数值指令性能是社区版本的**280%-735%**)、优化了元数据内存,支持代码加密,有效保障了代码安全
- [**旗舰版**](./ultimate/intro.md)。包含专业版的所有功能,另外包含了我们最核心的[DHE技术](./differentialhybridexecution),极大提升了性能,几乎(**未改动时为100%**)达到同等的原生AOT水平
- [热重载版](./reload/intro.md)。包含专业版的所有功能,同时支持卸载和重新加载单独的assembly,当前可以卸载掉程序集**100%**的元数据内存

Expand All @@ -27,7 +27,7 @@
|[完全泛型共享](./fullgenericsharing)|||||
|[DOTS](./dots)|||||
|[元数据优化](./metadataoptimization.md)|||||
|[离线指令优化](./basiccodeoptimization)|||||
|[解释性能优化](./basicoptimization)|||||
|[代码加固](./basicencryption)|||||
|[热重载](./reload/hotreloadassembly)|||||
|[访问控制机制](./accesspolicy)|||||
Expand Down
Loading

0 comments on commit 5e2c309

Please sign in to comment.