Should I use ids and hashes instead of strings in Animator methods?

That’s it, posting my little question here, asking if I should use overloads of Animator.CrossFade, Animator.SetFloat, Animator.Play, ect, which use ids or hashes of animations and parameters, instead of strings. Also, is that a big deal if I do not (I currently setting like dozens of floats per frame), which I assume suck, since if what I suspect is right, I am not just using comparsions of strings which is slower than comparsion of integers, I also do create a lot of strings every frame, which GC don’t like. Tho I don’t directly see that allocations at profiler, which makes me wonder if it’s true.

First, i want to clear up a misconception here :
Using animator.SetFloat("MyFloat") every frame WONT create a "MyFloat" string every frame , in terms of IL it will be turned into a constant string so that’s not an issue (and probably why you’re not seeing GC pileup)

Now, the reason why using IDs is better is because if you pass a string to the method it will just hash it anyways before doing whatever it’s doing , so if you know already which state you want to call then just save yourself the hashing during runtime and pass the pre-computed hash directly.
A pattern that i find helpful when using the animator/state is declaring hashes like this

public static class AnimatorStateHashes 
{
     public static readonly int WalkingState = Animator.StringToHash(nameof(WalkingState));
}

That way, the field name can be the same as the state and can avoid confusion or misspelling.