Hay varios "fallos", si lo que buscas es la optimización del código para que sea más rapido:
A) Cada llamada a la función implica calcular el height del elemento, y después setearlo, esto puede afectar mucho la UI por el repaint y reflow
B) Llamas 3 veces a document.getElementById, esta función es más rápida que otras del DOM puesto que la id en principio es única, pero sigue siendo una pédida de tiempo, usa una variable local!
C) Si usas un setInterval deberás establecer en algún punto un clearInterval, o si no el div crecerá sin parar hasta que se cuelgue el navegador.
D) No uses una función lineal en las transiciones!
E) Yo no suelo hacer apología de los frameworks a no ser que domines bien el JS "normal", pero en este caso creo que tienes demasiada tarea y poco conocimiento como para hacerlo por ti mismo, así que puedes usar jQuery, que además funciona en todos los sitios y está optimizado.
Sin embargo, si deseas investigar y hacerlo por ti mismo, te recomiendo altamente que leas
el post de @panino5001 sobre las transiciones en JS, muy bien explicado y muy útil.
Espero que todo esto te sirva de ayuda.
Saludos (: