ユーザー作成のコードシーケンスを 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];