There is a generation lag

I have this script here but there is a generation lag. What I mean is the player moves up but it still doesn’t generate anything for a while but then sudenly after a while it just generates a load in a few seconds and then repeats the process. So how would I change it so that it generates on time and not a load after some time. Here is the script underneath. Thanks in advance. It would be great if people could help.

using UnityEngine;
using System.Collections;

public class Generation : MonoBehaviour {

	public GameObject[] barGroups;
	public float minDistanceBetweenBarGroups; 
	public float maxDistanceBetweenBarGroups;
	public Transform playerTransform;

	void Start () 
	{
		
	}

	// Update is called once per frame
	float lastPlayerPosition;
	void Update () 
	{
		//if the player 6 units distance from its last distance ,then we will create new bar group
		if( playerTransform != null && playerTransform.position.y - lastPlayerPosition > 6)
		{

			createNewGroup();
			lastPlayerPosition = playerTransform.transform.position.y; // to store the present ball position y .
		}
	}

	int groupIndex=1;
	void createNewGroup()
	{

		GameObject barGroupNewInstance = GameObject.Instantiate(barGroups[Random.Range (0, barGroups.GetLength(0))]) as GameObject;
		barGroupNewInstance.transform.position= new Vector3(Random.Range(minDistanceBetweenBarGroups, maxDistanceBetweenBarGroups),1.5f*groupIndex,0 ); //this will create new bars group
		groupIndex++;
	}
}

what you could do is change this:

if( playerTransform != null && playerTransform.position.y - lastPlayerPosition > 6)
         {
 
             createNewGroup();
             lastPlayerPosition = playerTransform.transform.position.y;

to this:

if( playerTransform != null && playerTransform.position.y - lastPlayerPosition > 1)
         {
 
             createNewGroup();
             lastPlayerPosition = playerTransform.transform.position.y;

this should work.
Hope this helps!