Oracle® Developer Studio 12.5: パフォーマンスライブラリユーザーズガイド

印刷ビューの終了

更新: 2016 年 6 月
 
 

C の例

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