将用户编写的代码序列转换为对 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];