Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

パフォーマンスチューニング

この付録では、C プログラムでのパフォーマンスチューニングについて説明します。『Oracle Solaris Studio パフォーマンスアナライザ』マニュアルも参照してください。

H.1 libfast.a ライブラリ (SPARC)

libfast.a は、標準 C ライブラリ関数 malloc()free()realloc()calloc()valloc()、および memalign() の高速だが MT で安全でないバージョンを提供します。シングルスレッドアプリケーションでの高速割り当てのために最適化されているため、並列マルチスレッド割り振りや容量上の効率に優れたメモリー再利用を必要とするアプリケーションには適していない可能性があります。

libfast_r.alibfast.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 にあるルーチンをリンクします。