as I understand it the "game loop" that is inherit in the Unity engine makes any app made with it a battery hag.
Unity does not have an event based system, so it uses a lot more cpu then regular apps.
Their previous OnGUI based tick UI was meant for before mobile and caused many of these slower games. But there have been nice GUI systems like NGUI to help that. Their GameObject based SendMessage is too hefty and probably many new devs use that and have laggy games. Their core out of the box UI and messaging before Unity 5 was made for an era before mobile.
But if you know what you are doing it is C# underneath and you can always implement a messaging/event system, and many implemented their own UI or used popular assets like NGUI, EZGUI or DaikonForge (before they bailed when the new UI was released). The new UI is strongly influenced by NGUI as the original asset maker worked there on Unity UI, it took some different routes after he left but both are now very performance focused for mobile.
Garbage collection is one area where current mobile speeds are poor and hopefully IL2CPP can get to a place where it is optimized for that case. Now that Unity controls down to the metal it should be faster and better over time. They previously were locked to Mono 2.x performance on iOS though they still have to convert all their platforms other than iOS and WebGL.
Because I would like to do cross platform C# development (using Visual Studio IDE)... but the only option I found so far was Xamarin. But Xamarin's prices are out in the stratosphere somewhere. If they had a model like Unity it would be way better for us small developers.