この付録では、C プログラムでのパフォーマンスチューニングについて説明します。『Oracle Solaris Studio パフォーマンスアナライザ』マニュアルも参照してください。
libfast.a は、標準 C ライブラリ関数 malloc()、free()、realloc()、calloc()、valloc()、および memalign() の高速だが MT で安全でないバージョンを提供します。シングルスレッドアプリケーションでの高速割り当てのために最適化されているため、並列マルチスレッド割り振りや容量上の効率に優れたメモリー再利用を必要とするアプリケーションには適していない可能性があります。
libfast_r.a は libfast.a の MT で安全なバージョンですが、マルチスレッドによる並列メモリー割り振りはサポートしていません。一度に 1 つのスレッドだけがメモリーの割り当てまたは解放を実行できます。
32 ビットおよび 64 ビットの両方の Oracle Solaris で両方のバージョンがサポートされています。SPARC と x86 の両方のプラットフォームでサポートされています。
libfast malloc() により割り当てられたブロックを解放しても、異なるサイズの新しいブロックの割り当てにストレージは使用できるようにはなりません。このため、libfast はマルチフェーズアプリケーションでの使用には適していません。
プロファイリングを使用して、次のチェックリストのルーチンが自分のアプリケーションのパフォーマンスにとって重要かどうかを判断し、その後このチェックリストを使用して、libfast.a または libfast_r.a がパフォーマンスに有用であるかどうかを判断してください。
メモリー割り当てのパフォーマンスが重要であり、もっともよく割り当てられるブロックのサイズが 2 のべき乗と同等またはわずかに少ない場合は、libfast.a または libfast_r.a を使用してください。重要なルーチンは、malloc()、free()、および realloc() です。
アプリケーションがマルチスレッド対応である場合は、libfast.a を使用しないでください。代わりに libfast_r.a を使用します。
アプリケーションをリンクするときには、リンク時に使用するcc コマンドにオプション -lfast または -lfast_r を追加してください。cc コマンドは標準の C ライブラリにある同等のルーチンよりも先に libfast.a または libfast_r.a にあるルーチンをリンクします。