I have a simple scene with some 3d objects i made:

with a fps text counter and a dropdown menu which changes game quality between urp predefined profiles and one script which rotates an empty object that has main camera as a child and rotates around the scene…
I don’t know how Unity made their “Boat Attack Demo” playable on mobile devices, because my mobile (Xiaomi Redmi 5 plus) can do max 15 FPS with the LowQualityProfile. Everything except the bad sniper rifle is static and baked. What am i doing wrong?
Post processing is disabled.

OP here additional screens:
Have you tried using the profiler to figure out what the bottleneck is?
I used it yes. But i don’t know how to find bottleneck.
You said you were getting 15 FPS. You should check in the profiler which operation is taking up most of the time per frame.
Rendering is taking most of the time.
I don’t know what is causing these spikes.


Weird thing is that on mobile the low profile is around 13-14 FPS, but High quality profile is around 12-13 FPS.
I don’t know what is slowing it down.
You are profiling the editor here, which is locked to 60 fps, likely because vSync is enabled (e.g. on the game view, check the resolution drop down there) or Application.targetFrameRate is set.
The spike in this Profiler capture is due to the Profiler Window getting repainted every couple of frames. You could switch the target from Playmode to Editor to see what’s going on under that EditorLoop sample but it won’t help you mich because it’s something that only occurs in the Editor and not on a device. In fact, your desktop machine in the editor appears to be able to run this game just fine and is only loved to 60 fps (which your app would be on a phone as well, if it would go that fast).
So you need to focus on the Profiler results from the device. You say it’s due to Rendering, which sounds plausible. So pay attention to the interplay between main thread and Render thread. Look out for the common samples. And check out this Unite Now talk for an intro to profiling.