Function pl/sql中的内联函数?

Function pl/sql中的内联函数?,function,plsql,inline,oracle9i,Function,Plsql,Inline,Oracle9i,我有5行代码作为函数,它被调用了100000次。有没有办法使函数内联,这样我就不会在PL/SQL中遇到调用开销。Oracle 9i是我正在使用的版本 更新: 代码的内联并没有太大的改进,但我获得了2秒的时间。现在我正在寻找pl/sql中浮点数据类型的有效版本。二进制浮点不起作用,数字(10,5)已经被使用。您已经确定函数调用开销对性能问题没有多大影响,因此内联在这里无论如何都没有帮助 我假设您没有在PL/SQL中运行任何SQL或调用任何SQL函数?如果是这样的话,我下一步会去那里看看。 下一个选

我有5行代码作为函数,它被调用了100000次。有没有办法使函数内联,这样我就不会在PL/SQL中遇到调用开销。Oracle 9i是我正在使用的版本

更新:
代码的内联并没有太大的改进,但我获得了2秒的时间。现在我正在寻找pl/sql中浮点数据类型的有效版本。二进制浮点不起作用,数字(10,5)已经被使用。

您已经确定函数调用开销对性能问题没有多大影响,因此内联在这里无论如何都没有帮助

我假设您没有在PL/SQL中运行任何SQL或调用任何SQL函数?如果是这样的话,我下一步会去那里看看。

下一个选项是本机编译-有关详细信息,请参阅。你可能会有一些进步,因为你只会做数学


否则,您可能需要超越PL/SQL。你可以用PL/SQL语言调用许多其他语言编写的代码,包括C、C++和java。有关更多信息,请参阅。

PRAGMA INLINE
不幸的是,仅在Oracle 11g中引入。您是否确定调用此函数会产生大量有害的开销?@Jeffrey Kemp这就是我指定oracle 9i的原因,您是否知道如果我手动内联,你知道b/w 100000-1000000的函数调用开销会有多大吗?@Charles我怀疑因为函数被调用了这么多次,性能损失就在这个函数中,无论如何,我会挖掘并尽快让你知道,因为周末已经在这里开始:)。@yesraaj,这就是为什么我把它作为一个评论而不是一个“答案”:)事实上,我调用的是sin和cos函数,需要花费7秒的时间,我怎样才能将其最小化?您要调用该函数多少次?它打了多少个sin/cos电话?参数是否非常独特,或者是否存在许多重复参数(例如,是否可以缓存常见值的结果?@Jeffrey Kemp我无法缓存sin/cos,因为它们一直在变化,但是,我可以在循环中删除select语句,我正在寻找映射(键、值)pl/sql中的一种数据结构。@yesraaj:你读过我的答案了吗?“我假设您没有在PL/SQL中运行任何SQL或调用任何SQL函数?”如果您运行任何SQL,无论您调用sin/cos的频率有多高,我都可以99.9%确定SQL查询是问题所在。叹气:(@Jeffrey Kemp是的,我读了你的答案,正如你所说的主要性能滞后是由SQL造成的,我正在尝试消除select查询,但如果没有sin/cos函数,我可以节省6秒,这是整个过程运行所需时间的25%。