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