We study the basic problem of preemptive scheduling of an online stream of jobs on a single processor. The ith job arrives at time r(t) and has processing time p(i) that is known at the time of its arrival. If C(i) is the completion time of job t, then the flow time is C(i) -r(i) and stretch of a job is the ratio of its flow time to its processing time; that is, c(i)-r(i)/p(i) Flow time considers the time a job is in the system regardless of the service it requested; the stretch measure relies on the intuition that a job that requested long service must be prepared to wait longer than the small jobs. In this paper, we present improved algorithmic results in stretch scheduling. We first show that a simple online algorithm that takes amortized O(l) time per job arrival is 0(A1/a)-competitive with respect to maximum stretch, where A is the ratio of the largest processing time to the smallest processing time. This is significantly more efficient than the best known online algorithm for this problem which takes ft(n2) per scheduling step (n is the number of jobs seen thus far). We next present a polynomial time approximation scheme for average stretch scheduling. The previous best polynomial-time algorithm is the shortest remaining processing time algorithm, which achieves a 2-approximation. Finally, we consider the impact of incomplete knowledge of job sizes on the average stretch performance of scheduling algorithms. We show that a constant-factor competitive ratio tor average stretch is achievable even if the processing times (or remaining processing times) of jobs are known only to within a constant factor of accuracy.