Path: utzoo!utgpu!water!watmath!clyde!bellcore!rutgers!njin!princeton!phoenix!haahr From: haahr@phoenix.Princeton.EDU (Paul Gluckauf Haahr) Newsgroups: comp.arch Subject: Re: Sw vs. Hw BitBlit. Summary: macintosh character rendering speed (7000 char/sec) is very fast Message-ID: <3449@phoenix.Princeton.EDU> Date: 11 Aug 88 06:52:40 GMT References: <1988Aug3.153415.9033@utzoo.uucp> <118@leibniz.UUCP> Reply-To: haahr@princeton.edu (Paul Gluckauf Haahr) Organization: Princeton University, Princeton NJ Lines: 50 In article <118@leibniz.UUCP> hwt@leibniz.UUCP (Henry Troup) writes: > The estimable Mr. Spencer (got to keep all the Henry's straight) > queries if anyone has numbers for how much character i/o happens > as against graphics on a graphics (bitmap) terminal. > I don't know, but I do remember that character writing speed was a > big thing for MacIntosh QuickDraw (9k characters per second). It's > in the Byte interview in 1984. The Byte reference is to the February 1984 issue, and the rendering speed given was actually 7K characters/second. (the information is given on page 37 and repeated on page 76). Still, remarkably fast for a 68000, even given that this was done in hand coded assembly language. The 9K seemed about a factor 5 too high, which is why I looked the article up. 7000 chars/sec is still faster than I would have expected. They do not give sizes of the characters, and say in the article that it is irrelevant, but that still probably assumes something like 9x14. Much larger characters would probably hurt performace. Later Macs may be faster (if someone recoded the QuickDraw stuff to use the bit field instructions, the Mac II could scream). By way of comparision, the Pike/Locanthi/Reiser "Hardware/Software Tradeoffs for Bitmap Graphics on the Blit" paper gives numbers (page 146) that work out to 2400 chars/sec for the blit, 900 chars/sec for the Sun-1, and 2950 for the Sun-2. This assumes rendering one character at a time. Locanthi's fastest example from the EUUG "Fast bitblt() with asm() and cpp" paper gives 6200 chars per second for a 16 MHz, 2 wait state 68020. Again, this is for one bitblt() call per character. My monochrome sun-3/60 (68020, 20 MHz, bwtwo, with the normal, not high resolution, monitor), using the large console font (gallant.r.19) comes out to about 3200 chars/sec. I have no idea if they render more than one character at once. This is a very large font, however, and the output routine is in the prom monitor. I did not try to write a program to test pixrect character speeds on a normal sized font. My own bitblt, on the same sun-3/60, for an 8x14 font, gives 8100 chars/sec, if characters are rendered individually. If characters are batched up and bitblt() is called only once, the speed is > 16000 chars/sec. This code is a combination of c (with inline assembly for fetching the characters from the font bitmap and bitblt()s narrower than one word) and compile-on-the-fly code for bitblt()s spanning word boundaries. The real point: the Macintosh, with no hardware assist, and hand-coded assembly, draws characters very fast. paul haahr princeton!haahr or haahr@princeton.edu