IIF中的冗余条件会对代码的整体性能产生多大影响?

时间:2015-04-17 18:55:14

标签: informatica informatica-powercenter

让我先解释一下情况。

我们有一个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中的表现?它可以忽略不计吗?还是很大?还有什么方法可以衡量这可以带来多少性能下降?

1 个答案:

答案 0 :(得分:1)

如果仅考虑此冗余,则不会出现明显的性能问题。对于大数据量,它可能会略有影响。

这是因为操作次数与正在处理的数据量呈线性增加。当运行时间/操作次数增加为输入数据量的二次/三次或指数函数时,存在严重的性能问题。

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

然而,正如@Maciejg建议的那样,你应该总是尽量避免使用冗余代码,因为多个这样的故障可能会累积并对性能产生重大影响。