How do I prevent the GUI from creating Lag?

I am trying to simulate a keyboard on screen using pngs as GUI textures that form the background of the OnGUI() button control. However when I run the scene there is a lot of lag. I’m sure there is a better way of doing this so please let me know how i could make my code better.

the pngs I’m using are 81 x 82 pixels with a gap of 5px between buttons.

I have used the following code to do this

public Texture[] alphaButtons;

void OnGUI () 
	{	
		
		GUI.BeginGroup (new Rect (Screen.width / 2 - 428, Screen.height / 2 + 128, 855, 256));
		// All rectangles are now adjusted to the group. (0,0) is the topleft corner of the group.
				
		// Alphabet buttons
		
		/****************************First Row****************************/
		if (GUI.Button(new Rect(0, 0, 81, 82), alphaButtons[0], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(86, 0, 81, 82), alphaButtons[1], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(172, 0, 81, 82), alphaButtons[2], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(258, 0, 81, 82), alphaButtons[3], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(344, 0, 81, 82), alphaButtons[4], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(430, 0, 81, 82), alphaButtons[5], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(516, 0, 81, 82), alphaButtons[6], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(601, 0, 81, 82), alphaButtons[7], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(688, 0, 81, 82), alphaButtons[8], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(774, 0, 81, 82), alphaButtons[9], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		/****************************Second Row*****************************/
		
		if (GUI.Button(new Rect(0, 87, 81, 82), alphaButtons[10], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(86, 87, 81, 82), alphaButtons[11], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(172, 87, 81, 82), alphaButtons[12], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(258, 87, 81, 82), alphaButtons[13], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(344, 87, 81, 82), alphaButtons[14], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(430, 87, 81, 82), alphaButtons[15], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(516, 87, 81, 82), alphaButtons[16], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(601, 87, 81, 82), alphaButtons[17], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(688, 87, 81, 82), alphaButtons[18], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		
		/****************************Third Row****************************/
		
		if (GUI.Button(new Rect(0, 174, 81, 82), alphaButtons[19], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(86, 174, 81, 82), alphaButtons[20], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(172, 174, 81, 82), alphaButtons[21], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(258, 174, 81, 82), alphaButtons[22], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(344, 174, 81, 82), alphaButtons[23], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(430, 174, 81, 82), alphaButtons[24], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		if (GUI.Button(new Rect(516, 174, 81, 82), alphaButtons[25], "default1"))
		{
            GameObject.Find("Soldier").SendMessage("mistakeMade");
		}
		
		// End the group we started above. This is very important to remember!
		GUI.EndGroup ();
	}

just add this to the start of your OnGUI:

useGUILayout = false;

This means you wont be able to use GUILayout or GUI.window. but ti will reduce lag.
Btw you can do all that in a lot less lines of code: See Here