Thread View: comp.lang.postscript
1 messages
1 total messages
Started by Andy Kinsman 253-7794
Fri, 09 Oct 1992 20:29
Here is a postscript information/benchmark program
Author: Andy Kinsman 253-7794
Date: Fri, 09 Oct 1992 20:29
Date: Fri, 09 Oct 1992 20:29
575 lines
12961 bytes
12961 bytes
%!
%
% psparams.ps - display some interesting things about the device
% this code is executing on.
% - run a few benchmarks.
%
% (C) 1992 Andrew A. Kinsman. All rights reserved.
%
%
/Times-Roman findfont 12 scalefont setfont
/inch { 72 mul } def
/line-feed { 0 -.16 inch translate 0 0 moveto } def
/do-last-page true def % contains optional performance tests
%
% dump return values
% ( literal dictionary-name -- )
/dump-returns {
mark 3 1 roll % mark stack
cvx exec begin
cvx exec end % convert and execute it
counttomark
( ) show
-1 1 {
1 sub index % get the nth-1 down the stack
30 string cvs show
( ) show
} for
cleartomark % trash all returns
} def
%
%
% print-dict-exec ( literal-key -- )
% - print the name of the dictionary a key is found in.
% - and call dump-returns to execute it.
%
/print-dict-exec {
dup % print the dictionary it is found in.
userdict exch known { line-feed
(userdict:) show
dup 20 string cvs show
dup (userdict) dump-returns
} if
dup
systemdict exch known { line-feed
(systemdict:) show
dup 20 string cvs show
dup (systemdict) dump-returns
} if
dup
statusdict exch known { line-feed
(statusdict:) show
dup 20 string cvs show
dup (statusdict) dump-returns
} if
dup
errordict exch known { line-feed
(errordict:) show
dup 20 string cvs show
dup (errordict) dump-returns
} if
dup
systemdict /serverdict known { % possibly no serverdict?
serverdict exch known { line-feed
(serverdict:) show
dup 20 string cvs show
dup (serverdict) dump-returns
} if
} if
pop
} def
%
%
% print-dict ( literal-key -- )
% - print the name of the dictionary a key is found in.
%
/print-dict {
dup % print the dictionary it is found in.
userdict exch known { line-feed
(userdict:) show
dup 20 string cvs show
} if
dup
systemdict exch known { line-feed
(systemdict:) show
dup 20 string cvs show
} if
dup
statusdict exch known { line-feed
(statusdict:) show
dup 20 string cvs show
} if
dup
errordict exch known { line-feed
(errordict:) show
dup 20 string cvs show
} if
dup
systemdict /serverdict known { % possibly no serverdict?
serverdict exch known { line-feed
(serverdict:) show
dup 20 string cvs show
} if
} if
pop
} def
erasepage
%
% mark imagable area with gray dotted line
gsave
0.6 setgray
1 setlinewidth
[5] 0 setdash
clippath stroke
grestore
% mark corners of default bounding box
newpath clippath pathbbox newpath
2 copy .5 inch sub exch 2.2 inch sub exch moveto
1 index 10 string cvs show (,) show
0 index 10 string cvs show
2 copy .5 inch sub exch .5 inch sub exch moveto lineto stroke
2 copy .5 inch add exch .5 inch add exch moveto
1 index 10 string cvs show (,) show
0 index 10 string cvs show
2 copy .5 inch add exch .5 inch add exch moveto lineto stroke
% goto top of page
gsave
1 inch 10.8 inch translate
% major information at top
line-feed
line-feed
line-feed
(PostScript printer analysis and benchmark - page 1) show
line-feed
((C) 1992 Andrew A. Kinsman) show
line-feed
line-feed
(This was printed on a ") show
statusdict begin product end show
(" printer.) show
line-feed
(Version ) show
statusdict begin version end 10 string cvs show
line-feed
/resmatrix matrix def
/findresolution {
72 0 resmatrix defaultmatrix dtransform
/yres exch def /xres exch def
xres dup mul yres dup mul add sqrt
} def
(Device resolution is ) show
findresolution 10 string cvs show
( dots/inch.) show
% default TM helpful
line-feed
matrix defaultmatrix
(Default transformation matrix is:) show
line-feed
( [) show
dup 0 get 10 string cvs show ( ) show
dup 1 get 10 string cvs show ( ) show
dup 2 get 10 string cvs show ( ) show
dup 3 get 10 string cvs show ( ) show
dup 4 get 10 string cvs show ( ) show
5 get 10 string cvs show (].) show
% display some information about the dictionaries
line-feed
(Dictionary stack has ) show
countdictstack 10 string cvs show
( dictionaries on it.) show
% password open?
statusdict begin
0 checkpassword
end
{ line-feed (Server password is zero.) show
} if
%
% dictionary permisions checker
%
/d-perm-check {
dup
rcheck { (R) show } { (-) show } ifelse
dup
wcheck { (W) show } { (-) show } ifelse
xcheck { (X) show } { (-) show } ifelse
( ) show
} def
line-feed
line-feed
(Dictionary attributes:) show
line-feed
userdict d-perm-check
(userdict) show
2 inch 0 inch moveto userdict length 10 string cvs show
( used of ) show
userdict maxlength 10 string cvs show
( entries.) show
line-feed
systemdict d-perm-check
(systemdict) show
2 inch 0 inch moveto systemdict length 10 string cvs show
( used of ) show
systemdict maxlength 10 string cvs show
( entries.) show
line-feed
statusdict d-perm-check
(statusdict) show
2 inch 0 inch moveto statusdict length 10 string cvs show
( used of ) show
statusdict maxlength 10 string cvs show
( entries.) show
line-feed
errordict d-perm-check
(errordict) show
2 inch 0 inch moveto errordict length 10 string cvs show
( used of ) show
errordict maxlength 10 string cvs show
( entries.) show
systemdict /serverdict known % possibly no serverdict
{
line-feed
serverdict d-perm-check
(serverdict) show
2 inch 0 inch moveto serverdict length 10 string cvs show
( used of ) show
serverdict maxlength 10 string cvs show
( entries.) show
} if
% VM usage
line-feed
line-feed
vmstatus
(VM status- level: ) show
2 index 10 string cvs show
( used: ) show
1 index 10 string cvs show
( max: ) show
0 index 10 string cvs show
pop pop pop
% some interesting words, if they exist, and the values they return
% lazy writer ops, and some linotronics
line-feed
line-feed
(The following operators exist and report these values:) show
/currentscreen print-dict-exec
/dostartpage print-dict-exec
/filmcounter print-dict-exec
/jobname print-dict-exec
/jobtimeout print-dict-exec
/manualfeed print-dict-exec
/manualfeedtimeout print-dict-exec
/margins print-dict-exec
/measure print-dict-exec
/mirrorprint print-dict-exec
/negativeprint print-dict-exec
/pagecount print-dict-exec
/pageparams print-dict-exec
/pagestackorder print-dict-exec
/pagetype print-dict-exec
/prefeed print-dict-exec
/revision print-dict-exec
/waittimeout print-dict-exec
% don't execute the following, they may hang it.
line-feed
line-feed
(The following page sizes exist:) show
/letter print-dict
/Letter print-dict
/note print-dict
/legal print-dict
/11x17 print-dict
/ledger print-dict
/a3 print-dict
/a4 print-dict
/A4 print-dict
/a5 print-dict
/A5 print-dict
/b5 print-dict
/B5 print-dict
grestore
showpage
% page 2
% available fonts include....
gsave
1 inch 10.8 inch translate
line-feed
line-feed
line-feed
(PostScript printer analysis and benchmark - ) show
statusdict begin product end show
( - ) show
( page 2) show
line-feed
((C) 1992 Andrew A. Kinsman) show
line-feed
line-feed
(The following fonts exist in the FontDirectory:) show
% dump-dict ( dictionary level -- )
/dump-dict {
dup 2 lt % restrict depth to this number
{ exch % ( level dict -- )
{ % ( level key value -- )
dup type /dicttype eq % only display and recurse into dicts.
{
line-feed % ( level key value -- )
% indent "level" blanks
2 index 4 mul { ( ) show } repeat
1 index 50 string cvs show % display key
gsave
0 index 12 scalefont setfont
3.25 inch 0 moveto (The Quick Red Fox Jumped) show
grestore
dup 3 index 1 add dump-dict % recurse
} if
pop pop % toss key value pair
} forall
pop % toss level
}
{ pop pop % toss dictionary and level
} ifelse
} def
systemdict /FontDirectory get 1 dump-dict
showpage
grestore
% page 3 performance tests
do-last-page {
gsave
1 inch 10.8 inch translate
line-feed
line-feed
line-feed
(PostScript printer analysis and benchmark - ) show
statusdict begin product end show
( - ) show
( page 3) show
line-feed
((C) 1992 Andrew A. Kinsman) show
grestore
gsave
%
% performance test
% forever to be known as the Fresnel benchmark for
% PostScript printers.
%
/lamda .000055 def % wavelength (cm)
/dist 5 def % dist to focus (cm)
/colorcnt 16 def % number of colors to use in ring
% circle at current center of a specific radius ( radius - )
/circle { 0 exch 0 exch 0 360 arc } def
% translate to center of page
8.5 inch 2 div 8.0 inch translate
% get-radius ( n -- radius-cm )
/get-radius {
dup lamda mul 4 div dist add mul lamda mul sqrt
} def
%
% do-ring ( outer-rad inner-rad -- )
/do-ring {
/ring-color 1 def % start at white
2 copy sub colorcnt div neg exch % colorcnt divisions or steps
{
ring-color setgray
circle fill
ring-color 1 colorcnt div sub /ring-color exch def % next color
} for
} def
% scale up for easy viewing
70 70 scale
% draw circles, work from largest to smallest radius
% because postscipt is a paint over language
usertime
20 -1 1 {
dup get-radius % compute outer radius (cm)
2.54 div % convert to inches
inch % convert to points
exch 1 sub
get-radius % inner radius (cm)
2.54 div % convert to inches
inch
do-ring
}
for
grestore
gsave
usertime exch sub 1000 div
3.0 inch 5.8 inch translate
0 0 moveto
(Fresnel benchmark: ) show
10 string cvs show
( secs.) show
grestore
gsave
%
% grayscale test pattern
%
usertime
2.25 inch 1.0 inch translate
gsave
/gscale 4.0 def
gscale inch dup scale
/str ( ) def
/val 0 def
% grayscale image
16 16 8
[16 0 0 -16 0 16]
{ str 0 val put
val 1 add /val exch def
str }
image
grestore
% add vertical grating
1 setlinewidth
0 gscale 16 div gscale { inch dup 0 moveto gscale .1 add inch lineto stroke
} for
% add horizontile grating
1 setlinewidth
0 gscale 16 div gscale { inch dup 0 exch moveto gscale .1 add inch exch lineto stroke
} for
grestore
gsave
usertime exch sub 1000 div
3.0 inch .8 inch translate
0 0 moveto
(Gray scale benchmark: ) show
10 string cvs show
( secs.) show
% details about known "printers" performance
% Fresnel benchmark
grestore
gsave
0.25 inch 9.8 inch translate
line-feed
(psh Sparc2) show
line-feed
( 1.659 secs.) show
line-feed
(pageview Sparc2) show
line-feed
( 2.713 secs.) show
line-feed
(Ghostscript 486-40MHZ) show
line-feed
( 7.580 secs.) show
line-feed
(Ghostscript Sparc2) show
line-feed
( 8.288 secs.) show
line-feed
(NeWS Server V2.1) show
line-feed
( 26.841 secs.) show
line-feed
(NeWS Server V3) show
line-feed
( 27.259 secs.) show
line-feed
(QMS-PS 810 Turbo) show
line-feed
( 39.947 secs.) show
line-feed
(QMS-PS 2210) show
line-feed
( 41.077 secs.) show
line-feed
(Ghostscript 286-12MHZ) show
line-feed
( 63.660 secs.) show
line-feed
(LaserWriter II NT) show
line-feed
(222.574 secs.) show
line-feed
(HP LaserJet IIIP) show
line-feed
(237.065 secs.) show
% grayscale benchmark
grestore
0.25 inch 5.0 inch translate
line-feed
(psh Sparc2) show
line-feed
( 0.117 secs.) show
line-feed
(pageview Sparc2) show
line-feed
( 0.146 secs.) show
line-feed
(Ghostscript 486-40MHZ) show
line-feed
( 0.170 secs.) show
line-feed
(Ghostscript Sparc2) show
line-feed
( 0.233 secs.) show
line-feed
(Ghostscript 286-12MHZ) show
line-feed
( 1.070 secs.) show
line-feed
(NeWS Server V2.1) show
line-feed
( 3.000 secs.) show
line-feed
(NeWS Server V3) show
line-feed
( 5.207 secs.) show
line-feed
(QMS-PS 2210) show
line-feed
( 5.274 secs.) show
line-feed
(QMS-PS 810 Turbo) show
line-feed
( 6.989 secs.) show
line-feed
(LaserWriter II NT) show
line-feed
( 13.354 secs.) show
line-feed
(HP LaserJet IIIP) show
line-feed
( 13.605 secs.) show
showpage
} if % do performance page
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads