动作存储、执行与调试
一、统一 基础动作/触发规则/组合动作的数据存储结构
2.0 全面统一了基础动作/触发规则中的快捷动作/组合动作的整体数据存储结构。
动作不再按照动作页方式保存
二、全新自研表达式引擎QkEval
功能优化
支持更多的c#语法
更强的诊断能力
表达式执行失败时,QkEval 会尽量提供:
- 出错原因
- 出错的表达式片段
- 对应的行号和列号
- 暂不支持的语法类型
- 解析错误与执行错误的区别
即使表达式经过了兼容转换,错误位置也会尽量映射回用户最初输入的代码,方便在表达式编辑器中快速定位问题。
性能优化
| 场景 | Z | QkEval | QkEval 优势 |
|---|---|---|---|
| 简单算术 | 8.438 µs / 4857 B | 0.540 µs / 320 B | 约快 15.6 倍,少分配 93% |
| 120 个变量仅读 2 个 | 29.252 µs / 28035 B | 0.299 µs / 272 B | 约快 98 倍,少分配 99% |
| 链式成员访问 | 7.421 µs / 4785 B | 0.849 µs / 528 B | 约快 8.7 倍 |
| 条件与字符串方法 | 7.579 µs / 4865 B | 1.729 µs / 952 B | 约快 4.4 倍 |
| LINQ 100 元素 | 11.044 µs / 5627 B | 5.626 µs / 1424 B | 约快 2 倍,少分配 75% |
| 200 条冷表达式 | 151.286 µs / 33238 B | 8.504 µs / 2966 B | 约快 17.8 倍 |
| 5 条混合表达式 | 38.889 µs / 28948 B | 7.230 µs / 3784 B | 约快 5.4 倍 |