Performance Optimization – Generic symbols versus arguments for generic functions

I have many recursion relationships that take several hours to complete. I look for subtle reasons why it takes so long, and I hope to be able to reduce the time for more complicated and larger processes.

My first thought was obviously to do with an unnecessary pattern matching, which I eliminated as much as possible. A seemingly trivial one was dealing with symbols like MMA x[1] and y[3] etc, say vs x1 and y3, Is it worthwhile to switch from these argumentative general functions to these indefinite symbols?