[comp.lang.postscript] Postscript Printer Speed less than ratings

fritz@timer1.UUCP (fritz) (12/08/89)

I have a NEC LC-890 with 1 Meg memory running in Postscript Batch mode. 
at 19200 on a serial line.

It takes approximately 60 seconds to print a 45K chart in this format

.
.
.
/L {lineto} def
/LS {lineto stroke} def
/M {moveto} def
.
.
.

# # M # # L
# # L
# # L
# # L
.
.
.
# # LS %stroke every 100 L's to keep stack small
# # M # # L
# # L
# # L
# # L
.
.
.
showpage

##########
I do not think that the Printer is doing all that much "processing" since
it is just moving around.  The printer is rated at 6-8 Pages Per minute.
I would expect the bottleneck to be in the paper feed and print phase.
I would also expect the printer to do some processing while it is printing
so that 10 charts sequentially would take less time that 10*1_chart.

How can I speed this thing up?  More memory?  Why?  Better Programming?  How?

Is there something that can precede the chart to take better advantage of
the machine?



Thank You,
fritz concannon
Rightime Econometrics, Inc.
uunet!timer1!fritz
Disclaimer:  Nothing I say can be construed as opinions of management

amanda@mermaid.intercon.com (Amanda Walker) (12/09/89)

In article <372@timer1.UUCP>, fritz@timer1.UUCP (fritz) writes:
> I do not think that the Printer is doing all that much "processing" since
> it is just moving around.  The printer is rated at 6-8 Pages Per minute.
> I would expect the bottleneck to be in the paper feed and print phase.
> I would also expect the printer to do some processing while it is printing
> so that 10 charts sequentially would take less time that 10*1_chart.

The printer is probably spending most of its time doing the following
things:

 - parsing the input data stream
 - stroking the paths
 - printing the pages

Most PostScript printers only have enough memory to hold a single page image,
so they can't start imaging one page until the previous one has been printed.

> How can I speed this thing up?  More memory?  Why?  Better Programming?  How?

Unless you try a more expensive printer, Better Programming is about the
only way.

> Is there something that can precede the chart to take better advantage of
> the machine?

You might want to try stroking each line segment by itself, since that will
involve less calculation than stroking a complex path.  Also, you could encode
your input somehow so that it would take less time to go across the serial
line...

Amanda Walker
InterCon Systems Corporation
--

neil@calvin.ksu.ksu.edu (Neil Erdwien) (12/11/89)

In article <372@timer1.UUCP> fritz@timer1.UUCP (fritz) writes:
>I have a NEC LC-890 with 1 Meg memory running in Postscript Batch mode. 
>at 19200 on a serial line.
>
>It takes approximately 60 seconds to print a 45K chart in this format
>
>.
>.
>.
>/L {lineto} def
>/LS {lineto stroke} def
>/M {moveto} def
>.
>.
>.
>
># # M # # L
># # L
># # L
># # L
>.
>.
>.
># # LS %stroke every 100 L's to keep stack small
># # M # # L
># # L
># # L
># # L
>.
>.
>.
>showpage

Adobe has a document that describes some printer driver speedups.  It is available
from their file server.  For more info, send mail consisting of only the word 'help'	to ps-file-server@adobe.com.

Warning:  That address is an MX address.  If your mailer can't handle MX addresses,	use this address: ps-file-server%adobe.com@decwrl.dec.com.

The file you want is 'case_study.ps' from the Documents directory.

In the above code, I'd suggest you change the definitions to:

/L /lineto load def
/LS {lineto stroke} bind def
/M /moveto load def

The basic idea in these changes is to save the interpreter some work.  The way
you have the procedures defined, when they are interpreted and call the real
lineto, moveto, and stroke, they are called "by name" for lack of a better term.
In other words, the name "lineto" has to be looked up to find the corresponding
definition.  By doing a 'load', the name is turned into the executable object
when the procedure is defined.  I presume the executable object is an actual
pointer to a ROM subroutine.

I'd be very interested to hear how much this speeds up the printer.  When I did
some similar changes, I got a reasonable speedup, but not massive.  10%-20% is
what I remember.

--
Neil Erdwien
Kansas State University
neil@ksuvm.ksu.edu  or  neil@calvin.ksu.ksu.edu

hascall@atanasoff.cs.iastate.edu (John Hascall) (12/11/89)

In article <372@timer1.UUCP> fritz@timer1.UUCP (fritz) writes:
}I have a NEC LC-890 with 1 Meg memory running in Postscript Batch mode. 
}at 19200 on a serial line.
 
}It takes approximately 60 seconds to print a 45K chart in this format...


     45 * 1024 / 1920 = 24 seconds just to get the data down the
     serial line (assuming the printer can actually accept data at
     19Kbaud without using flow-control).

John Hascall