Explanation of SAMPLE Programs If you like to compare speed records for your software and/or hardware against other people's, here are two more "benchmark" programs (or rather, two versions of the same program), in six different languages (a source file, in ASCII, for each language -- SAMPLE/*.* -- and the "COM" files generated by S-BASIC, BDS C, and Pascal/Z, in case you want to test those on your machine and don't have the compilers). You can, if you like, use these to prove that your compiler (Pascal/Z, in this case) is the best, since each version ran fastest in Pascal/Z. Actually, though, that wasn't the point of this exercise at all, since it was something I worked up as a simple demonstration (for new, prospective computer users) of the differences between different high-level languages. The main advantage of this "SAMPLE" program is that it is so simple that it is very easy to translate it between different languages and do the same things in each one. As a result, though, it should not be taken very seriously as a benchmark comparison, since most of the features of any language will not be tested. With that disclaimer on record, here are the results I obtained compiling and running the different versions on my own system (a North Star Horizon-2, with the standard 4-MHz Z-80; all languages, including North Star BASIC, running under control of CP/M 2.2). In the table below, "run times" (all in seconds) are given for "Version 1" (as the programs were submitted), with an empty loop (all operations in the loop commented out); and "Version 2", which is obtained by removing the comment or "REM" indicators inside the loop in each program. "Compile time" is the time required to convert the source program (Version 1, in each case, since the times were almost the same here) to a running program, with all steps under automatic control of a ".SUB" file (note, however, that if you want to actually do this with the Pascal/Z program, you will have to change its name to "SAMPLE.PAS", since, as noted in the "ARTIL/Z.PAS" program, the Pascal/Z compiler, assembler, and/or linker will not accept some types of legal CP/M file names, and this is another example of one that wasn't accepted). Results of SAMPLE Program Tests Language Run time (1) Run time (2) Compile time ======== ============ ============ ============ North Star BASIC 35.6 157.0 0 CBASIC-2 16.2 43.8 27.9 S-BASIC 12.5 24.6 55.0 BDS C 0.9 6.4 34.2 Pascal/M 4.1 9.0 40.4 Pascal/Z 0.7 3.6 111.9 You may draw your own conclusions from these data. Some of my own are: (1) Don't bother with any version of BASIC; even a version that compiles to machine code (S-BASIC) is significantly slower than any of the "good" languages (and notice, in the program listings, that I had to use some tricks that weren't in the manuals to get even that good a performance out of the BASIC's). CBASIC, if written in the normal way (without using the integer variable tricks shown in the program), is so much slower than even an interpreter BASIC (North Star) that it might more properly be referred to as an "encoder", rather than a compiler -- maybe useful if you're selling programs that you don't want modified, but otherwise not much use. (2) Among the "good" languages, Pascal/Z is slightly faster, for both versions, than BDS C, even though both produce machine-code programs; looks like a slight plus for Pascal/Z, especially for Version 2 of the program. (3) As expected, Pascal/Z is significantly faster than Pascal/M, although the advantage is much less for Version 2 (only a factor of 2.5), where the program actually has to do something. In my experience with other programs, especially ones with lots of disk activity, the differences can be even smaller. (4) On the other hand, running speed isn't everything. The third column dramatically demonstrates what most of you probably know already to be Pascal/Z's worst "feature" -- waiting for a program to be compiled is like waiting for Godot. I don't know if there is any easy way for Ithaca to improve that, but unless you write programs which run perfectly the first time, the length of the compile-time cycles can almost make you forget that when that program FINALLY runs right, it will run a few seconds faster than the other guy's. These opinions, of course, are mine alone, not those of anyone else in the Pascal/Z Users' Group; and while the speed comparisons may be of interest, I still think that a better use of these programs is in their demonstration of how different languages handle the same job. I hope they are of some use, for either purpose. Jim Bearden Cancer Center, University of Hawaii 1236 Lauhala Street Honolulu, Hawaii 96813  either purpose. Jim Bearden Cancer Center, University of HawN## ʲ * >H<7ʲ 7 !$ 87 NY¡%:2² :?ʲ Kʕ !" :D("!*%h.> .