第 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);
}