ユーザー作成のコードシーケンスを Oracle Developer Studio パフォーマンスライブラリルーチンの呼び出しに変換すると、アプリケーションのパフォーマンスが向上します。LAPACK から取った次のコード例で 1 つの例を示します。
int i; float a[n], b[n], largest; largest = a[0]; for (i = 0; i < n; i++) { if (a[i] > largest) largest = a[i]; if (b[i] > largest largest = b[i]; }
このコード例とまったく同じ機能を持つ Oracle Developer Studio パフォーマンスライブラリルーチンはありません。ただし、次のコード例のように、Oracle Developer Studio パフォーマンスライブラリルーチン isamax の呼び出しに置き換えることによってコードを高速化できます。
int i, large_index; float a[n], b[n], largest; large_index = isamax (n, a, l) - 1; largest = a[large_index]; large_index = isamax (n, b, l) - 1; if (b[large_index] > largest) largest = b[large_index];
Oracle Developer Studio パフォーマンスライブラリのネイティブ C isamax ルーチンを呼び出している上記のコード例と、CLAPACK の isamax ルーチンを呼び出している次のコード例で、相違を比較してください。
/* 1. Declare scratch variable to allow 1 to be passed by reference */ int one = l; /* 2. Append underscore to conform to FORTRAN naming system */ /* 3. Pass all arguments, even scalar input-only, by reference */ /* 4. Subtract one to convert from FORTRAN indexing conventions */ large_index = isamax_ (&n, a, &one) - l; largest = a[large_index]; large_index = isamax_ (&n, b, &one) - l; if (b[large_index] > largest) largest = b[large_index];