I don't know if this question get her place in physics.stackoverflow forum. I prefer post here, with code etc.

So, I want simulate 2D movements (no rotation) of an asteroid in space affected by a planet's gravity, the problem is how integrate that ?
Any better integration for performance ?

Here is the code in C:

 struct vec2
 {
 float x;
 float y;
 };
 
 struct body
 {
 double mass; //kg
 struct vec2 prev_pos; //for semi-implicit euler method
 struct vec2 pos; //position
 struct vec2 v; //velocity
 };
 
 void move_asteroid(float dt) {
 //semi-implicit euler integration #1 -moving the object
 asteroid.pos.x += asteroid.v.x * dt;
 asteroid.pos.y += asteroid.v.y * dt;
 
 //START
 float x = planet.pos.x - asteroid.pos.x;
 float y = planet.pos.y - asteroid.pos.y;
 float d = x * x + y * y; //distance^2 between asteroid and center of planet
 
 //acceleration
 float ah = G * ((planet.mass * asteroid.mass) / d); //gravity
 
 //get components of gravity
	 float rad = atan2(y, x);
	 float ax = ah * cos(rad);
	 float ay = ah * sin(rad);
 
 
 //semi-implicit euler integration #2 -update velocity
 asteroid.v.x += ax * dt;
 asteroid.v.y += ay * dt;
 }


*this is for 'fun' and sadly my knowledge is quite not good, I try to find with my vocabulary (not native english), if you have directions, ideas for better implementation (like study RK4 for correctness etc), it's welcome*

After @DMGregory's comment

Updated these lines:
 
 float rad = atan2(y, x);
	float ax = ah * cos(rad);
	float ay = ah * sin(rad);

to: 

 float percent = ah / sqrt(d);
 float ax = x * percent;
 float ay = y * percent;