Tail call optimization primarily optimizes memory, not time. It will reduce time costs, too(assuming calls are more expensive than jumps, which would probably be true in any architecture), but the memory used is the main issue.