How can i change a value for a specific amount of time?

I want to change my characters speed to a higher value a soon as the player presses space. But only for a specific amount of time. Heres the code: (Its a 2D game btw)

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

    private float characterSpeed = 0.10f;
    private float rollTime = 0.25f;

    void FixedUpdate()
    {                                                 
        if (Input.GetKey(KeyCode.W))                                
        {
            transform.Translate(Vector2.up * characterSpeed);
        }
        if (Input.GetKey(KeyCode.A))
        {
            transform.Translate(Vector2.left * characterSpeed);
        }
        if (Input.GetKey(KeyCode.S))
        {
            transform.Translate(Vector2.down * characterSpeed);
        }
        if (Input.GetKey(KeyCode.D))
        {
            transform.Translate(Vector2.right * characterSpeed);
        }

        if (Input.GetKey(KeyCode.LeftShift))
        {
            characterSpeed = 0.2f;
        } else {
            characterSpeed = 0.10f;
        }

        Roll();
    }

    void Roll()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            while (Time.time < Time.time + rollTime)
            {
                characterSpeed = 0.30f;
            }
            characterSpeed = 0.10f;
        }
    }
}

But every time i try it Unity just freezes and i just cant find the mistake in the code.

float rollEndTime;
void Roll()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rollEndTime = Time.time + rollTime;
}

    if (Time.time < rollEndTime)
    {
        characterSpeed = 0.30f;
    }
    else
    {
        characterSpeed = 0.10f;
    }
}

You can use a coroutine instead as suggested in the comments, but IMO, a coroutine would be overkill for this.