Why GUI is recreated on every OnGUI call?

Hi, sorry but for me it looks silly that all GUI is recreated on every OnGUI call instead of being created once in Start() method (references to GUI elements could be passed to class fields). Would you explain why it is so or am I missing something?

Thanks!

Unity’s GUI isn’t object oriented. It’s just calling static functions. And they have to be called to react to all the events (mouse, resize etc).