How fast is FlagShip? FlagShip runs about 2 to 20 times faster than Clipper on an equivalent hardware platform. See benchmarks later in this document. The Language itself is also substantially faster than any other Xbase language on Unix. Remember that With Unix you also have the opportunity to scale up the hardware platform... something you have in only a limited fashion with DOS & PC-LANS The Application Speed on UNIX In most performance tests, FlagShip is much faster than Clipper (on equivalent hardware) on the average 2 to 8 times, but up to 20-40 times faster when using typed variables (see LNG.2.6.1 and CMD.LOCAL...AS). Q: I have heard that FlagShip is actually quite slow, could this have to do with configuration? YES!! Some users have reported in a few cases that FlagShip is only 20% of the Clipper's speed. This is impossible, if the system is set up properly. Macros, Runtime Variable typing, and Runtime Code block evaluation tend to slow any application down. These issues are frequently overlooked in comparisons of FS produced code to C code, or Codebase code, neither of which have these capabilities. If these capabilities are not used in FlagShip, then our code does not pay the speed price either. On database and index access, faster access is always observed if Unix I/O speeds are equivalent to the DOS machine, and if the hardware is not otherwise too loaded. The only difference is the Clipper database and index access in single user mode, where the Clipper uses RAM only (does not r/w on the disk !!!) This is not possible in the same manner on Unix. In SHARED mode, FS is also faster than Clipper. In order to be a fair comparison, make sure Clipper has the files open in SHARED MODE. Why is the screen output slower than on DOS? The only speed disadvantage on UNIX is with screen output. Clipper writes directly to the video RAM, FlagShip cannot due to the multi-user nature of UNIX and the probable usage of remote terminals. FlagShip uses curses instead. Curses does screen mapping, and allows for many different users using same executable to be using many different types of Terminals at the same time.. The speed is comparable with Clipper's when linking in ANSI.OBJ with ANSI.SYS. To be a fair comparison, force Clipper to use the ANSI.SYS screen driver which is also a simple screen mapping utility. How can I increase the speed? 1. Increase the amount of available RAM memory. 2. Check the Kernel tuning for the amount of disk cache (disk buffers) configured, because if data is in the Cache, it needn't be pulled off the disk (Bigger is better). 3. Use faster I/O devices, and intelligent or caching controllers. 4. Write more efficient code using e.g. TYPED variables instead of LOCAL, Code-Blocks instead of Macros or "filtered" indices instead of SET FILTER. 5. Consider the effect of any other load that the machine may have to simultaneously support. 6. Use file systems that implement RAID (Redundant array of inexpensive drives) techniques, especially striping, and redundancy. This not only provides much better data security, but since all disk drives may retrieve at once their piece of any file which is spread out over more than one drive, you can end up with far faster retrieve times than a single disk drive. Check also: 1. Does the machine have enough physical RAM to run all its processes or does to have to do virtual memory swapping? Add memory, and Increase swap space. 2. Is the hard disk over 75% used? If so, things will slow down, Reduce Usage of Hard drive. 3. For a large database replacement, use DBCOMMIT() instead of COMMIT or DBCOMMITALL(), since the first works asynchronously while the other two synchronously. 4. Check the hints in the FlagShip manual to speed-up your application. How does FlagShip's speed compare to Clipper? Benchmarks running on THE SAME EXACT hardware 80486/DX50 shows, that: - The FlagShip language is approx. 20x faster than on DOS (e.g. loops, calculation etc.) - On Multiuser/Network operations, the most often used DBF commands Append, Replace are in FlagShip approx. 2x to 8x faster than on Networked DOS. - On SEEK, FS results are similar to the Clipper's one. Only the seldom used operations (INDEX, REINDEX) are on UNIX slightly slower - but we are working on it. - The results on DOS are extremely different in single user mode and in the network environment (SET EXCLUSIVE ON/OFF) and are significantly dependent on the loaded network IPX/NETx driver. - FlagShip is optimized for the most usual multi-user mode of UNIX, while Clipper for the single user processing, handling thereby all buffers directly in RAM only. Since in some countries it is not allowed by law to publish benchmark results, we will send you the sources on request, and/or results if your country's law allows. ********The Following is being released for the United States Only********** ********Multisoft, and WorkGroup Solutions deplore its communication******** ************To any countries where such information is forbidden************ Please show me a comparison of FlagShip's speed to Clipper's Benchmarks, and Benchmarking Program: Following are benchmarks done using Clipper 5.2c on a 486/50 and then again with FlagShip under SCO Unix on the same hardware. Besides not having a problem with memory sizes, code size, multi-user access, and bogging down network cables with packets.... Look at the kind of speed you gain by running code under Unix!!! ====================================================================== May 1994 BENCH.PRG running on THE SAME EXACT hardware 80486/DX50, 16 MB (HD: SCSI on Unix/Novell, ISO local) A. Clipper (R) 5.2c, DOS 5, 15MB EMS, local HD w. 4MB cache B. Clipper (R) 5.2c, DOS 5, Novell 3.11, local HD, no cache C. Clipper (R) 5.2c, DOS 5, Novell 3.11, 16 MB cache D. FlagShip 4.3, SCO UNIX, multiuser, No Cache on Controller In Seconds (A) (B) (C) (D) ----------Clipper------- --FS-- 1.Loop 200,000 x ................. 9.83 9.83 9.78 0.37 2.Addition 200,000 x ................. 2.69 2.70 3.02 0.15 3.Increment 200,000 x ................. 3.18 3.25 3.62 0.17 4.Increment 200,000 x ................. 3.24 3.25 3.62 0.17 5.Multiplic. 200,000 x ................. 1.54 1.55 1.92 0.18 6.Division 200,000 x ................. 1.81 1.88 2.25 0.48 7.Create database ...................... 0.33 0.28 0.06 0.05 8.Append 10000 records, shared ..... 14.83 40.54 89.25 31.20 9.Replace 2x 10000 records, shared ..... 20.60 40.92 61.08 27.47 10.Replace 2x 10000 rec, shar, COMMIT.... 40.09 60.63 11.76 8.87 11.Index 10000 rec on character .... 3.19 3.79 4.44 13.15 12.Index 10000 records on number ... 1.64 2.97 6.93 12.70 13.Seek 1000x shared .............. 1.37* 2.08 6.60 7.25 14.Seek 1000x shared .............. 0.99* 1.76 4.39 3.02 15.Replace 2x 1000x rec, sh index,COMMIT. 112.76 128.86 28.56 13.88 16.Append 10000 rec, exclusive ...... 0.82* 0.99* 1.21* 20.38 17.ZAP .................................. 0.02 0.02 0.03 0.10 18.Append 10000 rec, excl & COMMIT... 1012.27 1343.04 85.14 74.68 19.ZAP .................................. 0.01 0.06 0.02 0.08 20.Append 10000 rec, excl & SKIP 0... 1.10* 1.15* 1.16* 38.57 21.Reindex 10000 records ............. 2.91* 5.88 11.04 29.28 22.App+Repl 1000 rec,shar,2 indices ... 157.09 166.69 34.98 27.10 * HD Cache + RAM/EMS effect (not updating the DOS buffers) Conclusion: The results on DOS are extremly different in single user mode and in the network environment (SET EXCLUSIVE ON/OFF) and are significantly dependant on the loaded network IPX/NETx driver. FlagShip is optimized for the most usual multiuser mode, while Clipper for the single user processing, handling thereby all buffers directly in RAM only. Language results: FlagShip is approx. 20x faster than Clipper 5.2 (test 1..6) Database results: On Multiuser/Network operations, the most often used DBF commands (8,9,10,15,22) are in FlagShip approx. 2x to 8x faster than Clipper. On SEEK, FS results are similar to the Clipper's one. Only the seldom used operations (INDEX, REINDEX) are on UNIX slightly slower, but we are working on it. Flushing the DOS buffers (making changes visible to other users) may slow-down the execution of Clipper up to factor 10-20x (tests 15,18) compared to FlagShip. Indexing speed: We are working on optimizing the index speed as well. But the problem of comparing the speed to run-time systems like Fox or dBASE has any COMPILED application, Clipper and/or SIx or other RDD drivers. A run-time system prepares and manages the buffers, data and its storage internally, while a compiled program has to do it at the time of the index building. ============================================================================= As compared to Client Server network methods, the following benchmarks were noted. See how much faster your applications will work when a Unix machine is connected to a network as the applications server, rather than using an NLM on Novell. The Unix machine in fact can be the File and Print server to a DOS network at the same time as it is an applications server, and still be a multi-user box with terminals besides. Single User Append Replace Non- Replace Seek and Total blank Key Key Delete RaSQL/b 19 32 34 36 121 DBFNTX 32 24 29 23 108 DBFIDX/FS 13 6 9 6 34 RaSQL/B RDD 30 25 27 36 118 3 User Average of all 3 stations Append Replace Non- Replace Seek and Total blank Key Key Delete RaSQL/b 40 60 66 58 224 DBFNTX 198 133 280 139 751 DBFIDX/FS 37 18 26 12 93 RaSQL/B RDD 66 51 56 60 233 Station 1 Append Replace Non- Replace Seek and Total blank Key Key Delete RaSQL/b 45 69 78 60 252 DBFNTX 200 157 291 149 797 DBFIDX/FS 33 18 33 11 95 RaSQL/B RDD 72 57 67 62 258 Station 2 Append Replace Non- Replace Seek and Total blank Key Key Delete RaSQL/b 43 62 71 61 237 DBFNTX 198 153 289 146 786 DBFIDX/FS 39 15 17 15 83 RaSQL/B RDD 69 53 59 63 244 Station 3 Append Replace Non- Replace Seek and Total blank Key Key Delete RaSQL/b 33 48 49 53 183 DBFNTX 197 90 261 121 669 DBFIDX/FS 38 22 29 9 98 RaSQL/B RDD 58 42 43 55 198 *** Benchmark Program for above results Clipper 5.x vs. FlagShip *** Available in Electronic form on Request