Oracle® Developer Studio 12.5:性能库用户指南

退出打印视图

更新时间: 2016 年 6 月
 
 

C 示例

将用户编写的代码序列转换为对 Oracle Developer Studio 性能库例程的调用可以提高应用程序性能。在 LAPACK 的基础上改写的以下代码示例显示了一个例子。

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];