动作类型详解
参数性能(performance)
参数之间一旦"层层依赖",表单加载就会变慢。这一篇用一个三参数例子讲清延迟从哪来,以及怎么把依赖层级压平来提速。
本文来源 · Source
内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/action-types/parameter-performance-considerations/
原始标题:Performance considerations for parameter configuration
https://www.palantir.com/docs/foundry/action-types/parameter-performance-considerations/
原始标题:Performance considerations for parameter configuration
★
一句话速览
参数性能(performance):参数之间一旦"层层依赖",表单加载就会变慢。这一篇用一个三参数例子讲清延迟从哪来,以及怎么把依赖层级压平来提速。
1 参数也会影响性能
参数配置看似只是"填什么值",但文档提醒:参数之间的依赖(dependencies)——比如默认值和多选选项的定义——会直接影响动作…
2 链式依赖的例子
文档给了具体配置
3 扁平化建议
文档的核心建议是:配置参数时,尽量让依赖层级保持扁平(as flat as possible)
4 性能模拟器
下面的模拟器复现文档的建议
1
参数也会影响性能
一句话:参数之间的依赖,会拖慢表单加载。
参数配置看似只是"填什么值",但文档提醒:参数之间的依赖(dependencies)——比如默认值和多选选项的定义——会直接影响动作表单的加载耗时。
Dependencies between parameters … can impact the time that it takes for an action form to load.参数之间的依赖……会影响动作表单加载所需的时间。
原因在于:当一个参数的值要从"另一个参数的值"推导出来时,系统必须先把上游参数算出来,才能算下游的。依赖链越长、越串行,用户就要等越久表单才完全可用。
2
链式依赖的例子
三个参数,逐层推导,必须串行等待。
文档给了具体配置:
- 参数 1:对象引用,默认值是"对象集的单一结果(from single result of object set)"。
- 参数 2:字符串,默认值是"引用参数 1 的对象参数属性(object parameter property)"。
- 参数 3:字符串,无默认值,但配置成"从对象集取选项(get options from an object set)"的多选下拉,其对象集定义引用了参数 2。
用户一打开表单,系统就得迭代地做三步:
三步必须依次发生,因为每一步都在等上一步的结果。这就是加载变慢的来源。
3
扁平化建议
一句话:把依赖层级压平,让能并行的并行。
文档的核心建议是:配置参数时,尽量让依赖层级保持扁平(as flat as possible)。
回到上面的例子:如果参数 3 的对象集定义直接引用参数 1、而不是参数 2,那么参数 2 和参数 3 所需的信息就能并行推导——不用再等参数 2 算完才去算参数 3。
慢:链式
参数3 引用:参数 2顺序:1 → 2 → 3(串行)结果:总延迟更高
→
快:扁平
参数3 引用:参数 1顺序:1 之后 2、3 并行结果:总延迟更低
实操口诀:下游参数尽量引用"最上游、已确定的那个参数",而不是中间层;能不串的就别串。
4
性能模拟器
动手看:不同的引用方式,推导步骤差多少。
下面的模拟器复现文档的建议。第三个参数的对象集,应该引用"参数 2"还是"参数 1"?两种写法的总延迟不同:
依赖层级模拟器
参数 3 的对象集定义,引用哪一个上游参数?
推导步骤
—
—
点击上面按钮试一试。
小提醒:性能不是"功能对不对"的问题,而是"用户等多久"的体验问题。依赖设计得越扁平,表单越快变得可交互。
一页带走
① 依赖拖慢加载
默认值/选项相互依赖会影响表单耗时。
② 链式要串行
下游等上游,逐层推导变慢。
③ 压平层级
引用最上游参数,让能并行的并行。
④ 体验账
扁平化 = 表单更快变可交互。
延伸阅读 · 相关页面
按主题横向跳转,不必顺着目录一篇篇读。
常见问题速答 · FAQ
关于「参数性能(performance)」,读者最常问的几个问题。
参数也会影响性能是什么?
参数配置看似只是"填什么值",但文档提醒:参数之间的依赖(dependencies)——比如默认值和多选选项的定义——会直接影响动作表单的加载耗时。
扁平化建议是什么?
文档的核心建议是:配置参数时,尽量让依赖层级保持扁平(as flat as possible)。
性能模拟器是什么?
下面的模拟器复现文档的建议。第三个参数的对象集,应该引用"参数 2"还是"参数 1"?两种写法的总延迟不同。