Esta afirmação é estranha:
split("0,2,4,5,7,9,11,12",a,",");
Ele divide repetidamente uma string constante para criar uma matriz a
. Se você mover isso para uma seção BEGIN
, o programa deve funcionar da mesma forma - sem alocar uma nova cópia da matriz a
para cada registro de entrada.
Endereçamento de comentários: o for-loop e a expressão não alocam memória de maneira simples. Uma comparação rápida de mawk, gawk e awk mostra que não há nenhum problema com os dois primeiros, mas /usr/bin/awk
no OSX vaza rapidamente. Se a Apple tivesse um sistema de relatório de bugs, esse seria o lugar certo.