动作类型详解

参数性能(performance)

参数之间一旦"层层依赖",表单加载就会变慢。这一篇用一个三参数例子讲清延迟从哪来,以及怎么把依赖层级压平来提速。

原文 Palantir Foundry · Action types
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
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

用户一打开表单,系统就得迭代地做三步:

  • 取参数 1 的默认值先从对象集算出参数 1 的值。
  • 由参数 1 推导参数 2参数 2 的默认值依赖参数 1,必须等它算完。
  • 由参数 2 推导参数 3 的选项参数 3 的对象集又依赖参数 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"?两种写法的总延迟不同。