IIF 内部的冗余条件在多大程度上影响代码的整体性能?

Up to how much extent redundant conditions inside IIF affects the overall performance of code?

我先说明一下情况

我们的 IIF 条件如下所示:

IIF (IN( PRCSS_TYP,'X#') AND IN( YR_TYP,'X4','X5','X6'), 'YES', 'NO')

现在众所周知,如果 YR_TYP 是 X4、X5 或 X6 中的任何一个,PRCSS_TYP 将始终是 X#。因此,条件 {IN( PRCSS_TYP, 'X#')} 的第一部分变得不必要。

显然,在任何编程语言中,都不鼓励这种类型的编程实践。但在这里我的问题是特定于 Informatica 的。这在多大程度上影响了此代码片段在 informatica 中的性能?可以忽略不计吗?或者它很大?还有什么方法可以衡量这会导致多少性能下降?

如果只考虑这种冗余,不会有明显的性能问题。对于大数据量,可能会有轻微影响。

这是因为操作的数量随着正在处理的数据量线性增加。当 运行 time/number 操作随着输入数据量的 quadratic/cubic 或指数函数增加时,存在严重的性能问题。

此外,在典型的 Informatica 流程中通常存在更多源和目标瓶颈,您会注意到表达式转换中的任何滞后。 Informatica 使用单独的线程进行读取、写入和转换。如果您的转换线程大部分时间都处于空闲状态,则转换中的冗余代码不会对总 运行 时间产生任何影响。您可以检查会话日志,转换线程忙了多少时间。如果任何转换花费的时间较长,Informatica 将在会话日志中单独包含该转换的 运行 时间 (%)。

但是,正如@Maciejg 所建议的,您应该始终尽量避免冗余代码,因为多个此类故障可能会累积并显着影响性能。