Я никогда не замечал проблем с производительностью при получении времени. Это проблема в вашем коде?
В любом случае самое простое решение состоит в том, чтобы вычислить смещение для UTC-to-local и пересчитать его, если час отличается от времени, когда было вычислено смещение.