BBS: Inland Empire Archive Date: 02-28-93 (21:27) Number: 67 From: VICTOR YIU Refer#: NONE To: ALL Recvd: NO Subj: SpaceOut 1.0 ---> 1/3 Conf: (2) Quik_Bas
'Hello, All! ' ' After looking at Quinn Tyler Jackson's QOMPRESS, I felt that a faster, 'and tighter compressor for text could be written... and guess what... 'here comes this program! ' ' Part one of SPACEOUT.BAS... '________O_/________________________| SNIP |______________________\_O_______ ' O \ | HERE | / O ' ============================================= ' SpaceOut v1.0 þ by Victor Yiu þ Feb. 26, 1993 ' ============================================= ' þ QBS = YES! ' ' This is a much better compressor of plain text than ' Quinn Tyler Jackson's QOMPRESS, although it does strip ' up characters ASCII >128. Characters like that are ' almost illegal to post in echos anyway, so it really ' doesn't matter. ' ' What is different is that this compressor is FAST ' in just QB only code. It is optimized TO THE MAX! ' With direct string manipulation (no more MID$) and ' block transfers, it is the fastest text compression ' code I have seen. Even faster compiled! ' ' I have done some benchmarking... and here are the ' results: ' ' All tests run compiled on a 486/34. Input file: ' TELIX.DOC (documentation file for Telix 3.21) (215K) ' +--------------------------+--------------------------+ ' | QOMPRESS | SPACEOUT | ' +--------------------------+--------------------------+ ' | Saved 28956 bytes | Saved 42389 bytes | ' | Time required: 27.6 secs.| Time required: .38 secs. | ' +--------------------------+--------------------------+ ' ' That's right, folks -- SPACEOUT is 75 times faster -- ' and it compresses text 46% better. ;-) Sorry, Quinn... ' no bashing intended... would this be helpful to ' QBCIMR? It is a small, yet powerful and fast routine ' that can be applied easily... You can run vy.Encode ' for every message (I'm glad they are <16K). Average ' compression savings are around 20%. ' ' Well, granted, it isn't going to compress it as well ' as PKZIP or ARJ, but it's just a beginning. It's in ' 100% QB and it's fast. ' ' Warning: DO NOT BREAK OUT WHEN IT IS COMPRESSING. The ' data you are compressing will be corrupted. DECLARE FUNCTION vy.Decode% (Text$) DECLARE FUNCTION vy.Encode% (Text$) DEFINT A-Z CONST True = -1, False = 0 PRINT PRINT "SpaceOut v1.0 þ by Victor Yiu þ Public Domain" PRINT STRING$(45, "~") PRINT F$ = COMMAND$ IF LEN(F$) = 0 THEN INPUT "Filename"; F$ OPEN F$ FOR BINARY AS #1 InL& = LOF(1) OutL& = 0 PRINT PRINT "Sawing <G>..."; T! = TIMER DO SELECT CASE InL& - SEEK(1) + 1 CASE IS > 8192 Block$ = SPACE$(8192) CASE IS <= 0 EXIT DO CASE ELSE Block$ = SPACE$(InL& - SEEK(1) + 1) END SELECT GET #1, , Block$ Ok = vy.Encode(Block$) IF NOT Ok THEN EXIT DO OutL& = OutL& + LEN(Block$) LOOP CLOSE 'Continued on next message... --- Blue Wave/RA v2.10 [NR] * Origin: Hard Disc Cafe / Houston Texas / (713) 589-2690 / Node -*N (1:106/30.0)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET