How to optimize game performance in this code?

HI, i’m creating a game, in it my ball keep moving inside a box(4 walls), but it is not moving smoothly. I mean may be FPS are low or somehhing else out of my mind.
What i want is, below code to be reset to optimize my game performance from the ball perspective.
What changes should i make?

public class PlayerScript : MonoBehaviour {
public UIscript uiScript;

public GameObject PlayerWall;
public GameObject Player;
public GameObject Buondary;

public bool tapped = false;

public	float speed = 0.9f;
public Vector3 velocity;

Vector3 scale;

void Start () 
	{
	scale = uiScript.txt_currentscore.transform.localScale;

		uiScript.GameOn = true;
		uiScript.TapToPlay.SetActive (true);
		uiScript.ReplayPanel.SetActive (false);
		velocity = new Vector3 (Random.Range(-5,5), Random.Range(5,8), 0.0f);
		PlayerWall.SetActive (false);
	}

void Update ()
	{
		if (Input.GetMouseButtonDown (0))
			{
				tapped = true;
				uiScript.TapToPlay.SetActive (false);

				if(uiScript.GameOn)
				{
						StartCoroutine (EnableWall ());
				}
			}
	}

IEnumerator EnableWall()
			{
		uiScript.tapAudio.Play ();
		PlayerWall.SetActive (true);
		yield return new WaitForSeconds (0.15f);
		PlayerWall.SetActive (false);
		StopCoroutine (EnableWall ());
			}

void FixedUpdate()
			{
				if (tapped) 
					{
						if(velocity.x != 0)
						{
						uiScript.selected.rigidbody.MovePosition
							(Player.transform.position+velocity * Time.deltaTime *speed);
						}
				else
				{
					velocity += new Vector3(1,1,0);
									uiScript.selected.rigidbody.MovePosition
											(Player.transform.position+velocity * speed *Time.deltaTime);			
				}
				uiScript.selected.gameObject.transform.Rotate(new Vector3(0,0,velocity.y),Time.deltaTime*speed*200);
			
					}
			}

void OnCollisionEnter(Collision collision)
			{
				uiScript.collideAudio.Play ();			

				foreach (ContactPoint c in collision.contacts) 
						{
							velocity = Vector3.Reflect (velocity, c.normal);
							velocity.z = 0;
						}

				if (collision.collider.tag == "wall") 
					{
						uiScript.score += 1;
						uiScript.UpdateScore();
						if(speed < 3.8f)
							{
							speed += 0.2f;
							}
					}
			}

void OnTriggerEnter(Collider other)
		{
			uiScript.GameOver ();
		}

}

Move your balls in Update, and not in FixedUpdate