Solaris 動的トレースガイド

集積体の使用

第 9 章集積体で説明したように、DTrace の集積体を使用すると、データをスケーラブルに集積できます。連想配列にも、集積体とよく似た働きがあります。しかし、大域的な汎用変数としての性質上、集積体のようなリニアなスケーラビリティを提供できません。可能なかぎり、連想配列ではなく集積体を使用してください。以下は、推奨しない例です。

syscall:::entry
{
	totals[execname]++;
}

syscall::rexit:entry
{
	printf("%40s %d\n", execname, totals[execname]);
	totals[execname] = 0;
}

以下が、望ましい例です。

syscall:::entry
{
	@totals[execname] = count();
}

END
{
	printa("%40s %@d\n", @totals);
}