Conforme discutido no Capítulo 9Agregações, as agregações do DTrace permitem uma maneira escalável de agregar dados. As matrizes de associação podem parecer possuir uma funcionalidade similar às agregações. Entretanto, por serem variáveis de natureza global, com várias finalidades, elas não podem oferecer a escalabilidade linear das agregações. Você deve, portanto, preferir usar agregações em matrizes de associação quando possível. O exemplo a seguir não é recomendável:
syscall:::entry { totals[execname]++; } syscall::rexit:entry { printf("%40s %d\n", execname, totals[execname]); totals[execname] = 0; }
O exemplo a seguir é preferível:
syscall:::entry { @totals[execname] = count(); } END { printa("%40s %@d\n", @totals); }