Minha função de diferença de horário do PHP pode ser melhorada?

Abaixo está a minha função que irá receber um timestamp e dizer-lhe o tempo que passou a partir de agora no formato de23 dias 3 horas 4 minutos 6 segundos

O principal problema é no meu site eu uso o DATETIME do mysql ao invés do TIMESTAMP então para usar esta função eu devo converter meu datetime do mysql para um timestamp e então executá-lo através da minha função.

Então, eu estou curioso, existe uma maneira melhor de fazer isso, em algumas páginas onde eu tenho 100 resultados de mysql, PHP deve converter 100 datas em timestamps e então executar isso em 100 deles.

Eu só estou querendo saber se existe um método de melhor desempenho, e por favor não recomendo todos os frameworks PHP (zend, etc.)

Aprecie todas as dicas / ajuda

function duration($timestamp) {
    $years = floor($timestamp / (60 * 60 * 24 * 365));
    $timestamp %= 60 * 60 * 24 * 365;
    $weeks = floor($timestamp / (60 * 60 * 24 * 7));
    $timestamp %= 60 * 60 * 24 * 7;
    $days = floor($timestamp / (60 * 60 * 24));
    $timestamp %= 60 * 60 * 24;
    $hrs = floor($timestamp / (60 * 60));
    $timestamp %= 60 * 60;
    $mins = floor($timestamp / 60);
    $secs = $timestamp % 60;
    $str = "";
    if ($years == 1) {
        $str .= "{$years} year ";
    }elseif ($years > 1) {
        $str .= "{$years} yearss ";
    }
    if ($weeks == 1) {
        $str .= "{$weeks} week ";
    }elseif ($weeks > 1) {
        $str .= "{$weeks} weeks ";
    }   
    if ($days == 1) {
        $str .= "{$days} day ";
    }elseif ($days > 1) {
        $str .= "{$days} days ";
    }
    if ($hrs == 1) {
        $str .= "{$hrs} hour ";
    }elseif ($hrs > 1) {
        $str .= "{$hrs} hours ";
    }
    if ($mins == 1) {
        $str .= "{$mins} minute ";
    }elseif ($mins > 1) {
        $str .= "{$mins} minutes ";
    }
    if ($mins < 1 && $secs >= 1) {
        $str .= "{$secs} seconds ";
    }
    return $str;
}

questionAnswers(1)

yourAnswerToTheQuestion