ClearAll[lenwhile1, lenwhile2]
    lenwhile1 = #[[1 + LengthWhile[#[[All, 1]], # <= 0 &]]] &;
    lenwhile2 = #[[1 + LengthWhile[#, #[[1]] <= 0 &]]] &;

    lenwhile1 @ T
>    {2, 4, 4}

    lenwhile1 @ T == lenwhile2 @ T
> True

**Timings:** 

Using aardvark2012's setup with

    functions = {firstcase, lenwhile1, lenwhile2, pick, select, selfirst, throwcatch};

where 

    pick =  Pick[#, Sign[#[[All, 1]]], 1][[1]] &;

is suggested by tomd in a comment.

    SeedRandom[1]
    T1 = RandomInteger[{-5, -1}, {100000, 3}]~Join~{{2, 4, 4}};
    T2 = RandomInteger[{-5, 5}, {100000, 3}];

[![enter image description here][1]][1]

    Equal @@ (#[T1]& /@ functions)
> True

    Equal @@ (#[T2]& /@ functions)
> True


  [1]: https://i.sstatic.net/QYHXB.png