Message-ID: <3441CC6B.1CE7@seanet.com> Date: Mon, 13 Oct 1997 00:23:23 -0700 From: "Alan M. Doerhoefer" MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp CC: djgpp AT delorie DOT com Subject: FYI: speed of Allegro/DJGPP Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Precedence: bulk This is my testament to the speed of DJGPP and Allegro: I have been trying to speed up a simple Fractal program I wrote so that it's fast enough for a 486. I am interested in the exact Mandelbrot set, so my program begins by generating the entire set using 256 iterations per test for each pixel. Initially, I wrote it for Win32 with the dreadfully slow SetPixel function and without DirectX. Of course, this was UNBELIEVABLY SLOW. So I went back to DJGPP and Allegro, chose Mode X ,320 x 240, and my program suddenly became VERY FAST, as expected. What used to take many minutes on my Pentium 100 now took 7 SECONDS. This was perfect: thanks D.J., Shawn, and everyone else. However, I sent my program to my brother, who uses a 486 DX2, and he responded by explaining that it was TOO SLOW to hold his attention. So I set out to make a version faster than my Allegro version. I experimented with my old Borland C++ 3.0 and TASM 3.0. I wrote my own TASM routine to write directly to VGA in Mode 13 and linked it to C code identical to my Allegro version except for putpixel. Then I tried different combinations of optimizing levels and or inline assembler. I even wrote a Mode X version just for fun. Here is my inline asm for Mode 13h: (thanks A. LaMothe) asm { mov di, 0a000h mov es, di mov di, y shl di, 6 mov bx, di shl di, 2 add di, bx add di, x mov al, BYTE PTR color mov es:[di], al } All tests done on my Pentium 100 and the same CL-5434 graphics board: frac with Win32: 200 + seconds frac with bcc, tasm, Mode X 25 seconds frac with bcc, tasm, Mode 13h 14 seconds frac with DJGPP,Allegro,Mode X 7 seconds Allegro and DJGPP are FAST, at least under these circumstances. Does anyone know where all this speed is coming from? I assume it is mainly because of two reasons: 1.) The latest DJGPP gcc is 32 bit & well optimized for the 486 2.) Allegro's putpixel is well written. -- ______________________________ Alan M. Doerhoefer: aland AT seanet DOT com http://www.seanet.com/~aland/