home *** CD-ROM | disk | FTP | other *** search
- U
- ┬┘╘┼╙: ╙╘╥╔╬╟ ╙╨┼┼─
-
- BY ═AURICE ╩ONES
-
- ╧N ╠╧┴─╙╘┴╥ #210 ╔ DESCRIBED HOW
- ARRAY VARIABLES AND SIMPLE VARIABLES
- WERE STORED. ╔N THE CASE OF STRING
- VARIABLES ONLY THE NAME, LENGTH, AND
- TWO POINTERS ARE STORED. ╘HE POINTERS
- SHOW WHERE THE STRING IS STORED. ╘HE
- ACTUAL STRINGS ARE STORED EITHER IN
- THE CODE OR AT THE TOP OF ┬┴╙╔├ ╥┴═,
- EXTENDING DOWNWARD. ╘HIS LATTER METHOD
- OF STORAGE LEADS TO THE TOPIC OF
- GARBAGE COLLECTION.
-
- ╔F THE STRING APPEARS IN THE CODE,
- THE POINTERS WILL POINT INTO THE CODE,
- AND NO NEW MEMORY WILL BE NEEDED.
- ╙TRINGS CREATED BY STATEMENTS SUCH AS
- ┴$="╘HIS IS A STRING" AND STRINGS READ
- FROM DATA STATEMENTS WILL BE STORED
- THIS WAY.
-
- ╙TRINGS INTRODUCED INTO THE
- PROGRAM BY ╟┼╘, ╙╘╥$, OR BY
- CALCULATION, SUCH AS ┴$=├$+─$, ARE
- STORED AT THE TOP OF ┬┴╙╔├ ╥┴═. ┼ACH
- SUCCESSIVE STRING IS STORED IN THE
- FIRST FREE AREA CONTAINING ENOUGH ROOM
- FOR THE ENTIRE STRING. ╘HIS PROCESS
- CONTINUES UNTIL THE COMPUTER FINDS
- THAT THE SPACE BETWEEN THE LAST STRING
- AND THE TOP OF ARRAYS IS TOO SMALL FOR
- THE CURRENT STRING.
-
- ╫HEN THIS HAPPENS, THE GARBAGE
- COLLECTION ROUTINE ATTEMPTS TO
- REORGANIZE THE SPACE ABOVE ARRAYS.
-
- ╘O SEE WHY IT MAY BE POSSIBLE TO
- REORGANIZE THE SPACE WITHOUT LOSING
- VARIABLES, CONSIDER A PROGRAM WHICH
- USES ┴$ AND ┬$ OVER AND OVER. ╙UPPOSE
- THAT EACH IS STORED IN HIGH MEMORY AND
- EACH TAKES ON THESE VALUES IN THIS
- ORDER: ┴$ IS"├┴╘", ┴$ IS "┬╔╥─", ┬$ IS
- "╬╒═┬┼╥" AND FINALLY ┬$ IS "╠┼╘╘┼╥."
- ╘HE TOP OF MEMORY WILL NOW CONTAIN:
-
- ╠┼╘╘┼╥╬╒═┬┼╥┬╔╥─├┴╘
-
- ╔F THE GARBAGE COLLECTION ROUTINE
- IS USED, THE COMPUTER WILL LOOK AT THE
- POINTERS OF ALL VARIABLES AND SELECT
- THE ONE NEAREST THE TOP OF ╥┴═. ╔N
- THIS CASE, IT IS ┴$ AND THE POINTERS
- INDICATE THE START OF ┬╔╥─, THE
- CURRENT VALUE OF ┴$. ╙INCE THIS IS THE
- HIGHEST ADDRESS FOUND, ANY STRING
- ABOVE HERE IS NO LONGER NEEDED SO THE
- COMPUTER MOVES ┬╔╥─ TO THE TOP AND THE
- MEMORY NOW CONTAINS:
-
- ╠┼╘╘┼╥╬╒═┬┼╥┬╔╥┬╔╥─
-
- ╘HE ROUTINE NOW LOOKS THROUGH THE
- ENTIRE LIST AGAIN, DECIDING WHICH
- POINTER POINTS TO NEXT HIGHEST MEMORY
- LOCATION. ╔N OUR EXAMPLE THERE IS ONLY
- ONE STRING LEFT, ┬$. ╘HE CURRENT VALUE
- OF ┬$ IS ╠┼╘╘┼╥, SO THIS IS MOVED TO
- THE NEXT SPACE AFTER THE NEW POSITION
- OF ┴$ AND THE MEMORY LOOKS LIKE THIS:
-
- ╠┼╘╘┼╥╬╒═╠┼╘╘┼╥┬╔╥─
-
- ╘HE POINTER WHICH INDICATES THE
- BOTTOM OF STRINGS IS NOW SET TO THE
- SPACE WHERE THE NEWLY PLACED ╠┼╘╘┼╥
- STARTS. ╘HE OLD VALUES ARE NOT ERASED
- BUT WILL BE OVERWRITTEN BY THE NEXT
- STRING.
-
- ╙IMPLE ENOUGH, BUT IF THE NUMBER
- OF VARIABLES IS LARGE, THE PROCESS CAN
- BE TIME CONSUMING. ╙INCE THE SIMPLE
- VARIABLES AND THE ARRAY VARIABLES MAY
- CONTAIN STRINGS, ALL OF THESE AREAS
- MUST BE SEARCHED COMPLETELY ╞╧╥ ┼┴├╚
- ╓┴╥╔┴┬╠┼. ╔F THERE ARE 100 VARIABLES,
- EACH WILL BE LOOKED AT MANY TIMES, AND
- MORE TIME WILL BE REQUIRED TO MOVE
- EACH STRING.
-
- ╬OTICE THAT THE ROUTINE WORKS WITH
- POINTERS AND LENGTH OF STRING UNTIL
- THE ACTUAL MOVE IS MADE. ┼VEN THEN,
- THESE NUMBERS ALLOW THE STRING TO BE
- MOVED EFFICIENTLY, SINCE THE START OF
- THE NEW LOCATION IS EASILY CALCULATED.
-
- ╘HIS ALSO MEANS THAT THE ACTUAL
- MOVES REQUIRED ONLY A FRACTION OF THE
- TIME THAT THE SEARCH REQUIRES WHEN THE
- NUMBER OF STRINGS IS FAIRLY LARGE.
-
- ╘HE LENGTH OF STRINGS HAS VERY
- LITTLE EFFECT ON THE TIME REQUIRED FOR
- GARBAGE COLLECTION. ╘HE DOMINATING
- FACTOR IS THE NUMBER OF STRINGS STORED
- ABOVE THE END OF ARRAYS. ╫HEN THE
- SEARCH IS MADE, VARIABLES STORED IN
- THE CODE ARE PASSED OVER SINCE THEY
- ARE NEVER MOVED. ╥UN THE DEMO FOR
- EVIDENCE OF THESE STATEMENTS AND READ
- THE TEXT SCREENS FOR MORE INFORMATION.
-
-
- ╘HAT ABOUT DOES IT FOR THE SUMMARY
- OF THE STUDY, SO NOW ╔ WILL CLOSE WITH
- SOME COMMENTS AND SOME SUGGESTIONS.
-
- ╘HIS WHOLE THING WAS PROMPTED BY
- ╩EFF ╩ONES'S ┬┴╙╔├╙ ARTICLE ON
- ╠╧┴─╙╘┴╥ #57, AND WHILE A FEW OF HIS
- REMARKS MAY NEED TO BE QUALIFIED, HIS
- MAIN POINTS ARE WELL PROVED. ┴ FEW
- JIFFIES HERE AND THERE ARE OF NO GREAT
- IMPORT. ┴ FEW JIFFIES IN EACH PART OF
- A 1000 STEP LOOP ARE VERY IMPORTANT.
- ═ORE TIME IS GAINED BY USING SHORT
- CODE AND EFFICIENT ALGORITHMS THAN BY
- ATTEMPTING TO CHANGE MULTIPLY TO
- DIVIDE OR SOME OTHER SUCH DOUBTFUL
- SCHEME. ╫ORRY MORE ABOUT THE BIG
- PICTURE.
-
- ╔ NOW BELIEVE THAT GARBAGE
- COLLECTION HAS BEEN BADLY HANDLED IN
- THE LITERATURE. ╘HE USUAL THING HAS
- BEEN TO MAKE SOME PRONOUNCEMENT
- WITHOUT ANY EVIDENCE OR EXPLANATION.
- ═Y OPINION IS THIS: ╔F THE NUMBER OF
- STRINGS STORED AT THE TOP OF MEMORY IS
- RELATIVELY SMALL, SAY LESS THAN 60,
- SERIOUS PROBLEMS WITH GARBAGE
- COLLECTION WILL ONLY ARISE IF
- AVAILABLE MEMORY IS SMALL. ╘HE
- PROBLEM, THEN, IS TO STRIKE A BALANCE.
-
- ╔ SUSPECT THERE ARE MANY
- TECHNIQUES THAT NEED TO BE EXPLORED
- AND DISCUSSED, BUT ╔ AM NOT THE ONE TO
- DO IT. ╔ HAD A LOT OF TROUBLE
- DESIGNING PROGRAMS TO ILLUSTRATE THE
- IDEA. ╘HE MODIFIED ┬┘╘┼╙ #57 DEMO THAT
- ╔ MENTIONED IN ╨ART ╔ CONTAINED VERY
- LONG (ABOUT 140 CHARACTERS) STRINGS
- AND WAS CONSTANTLY GENERATING MORE.
- ┘ET, GARBAGE WAS ONLY COLLECTED AFTER
- ABOUT SIX HANDS AND REQUIRED ABOUT
- ╙┼╓┼╬ ╩╔╞╞╔┼╙.
-
- ┼MERSON SAID, "╞EAR ALWAYS SPRINGS
- FROM IGNORANCE." ├OULD IT BE THAT HE
- WAS TALKING ABOUT FEAR OF GARBAGE
- COLLECTION?
-
- ╔T SEEMS OBVIOUS THAT THE SPEED
- AND MEMORY USAGE ARE CONNECTED IN MANY
- WAYS AND THAT THE TWO MUST BE
- CONSIDERED TOGETHER. ╔ LIKE HEAVILY
- DOCUMENTED PROGRAMS, AND THIS STUDY
- SHOWS THAT SPEED IS NOT SERIOUSLY
- AFFECTED BY ╥┼═ STATEMENTS, UNLESS
- SPACE IS A PROBLEM.
-
- ╔N ORDER TO FULLY UNDERSTAND HOW
- ┬┴╙╔├ USES MEMORY, ONE NEEDS MUCH MORE
- DETAIL THAN WAS POSSIBLE HERE. ╔
- STRONGLY SUGGEST THAT SERIOUS
- PROGRAMMERS MUST UNDERSTAND THIS AND
- SUGGEST THE SOURCES THAT ╔ MENTIONED
- IN ╨ART ╔.
-
- ╬UMBERS AND STRINGS STORED BY
- ARRAYS USE LESS SPACE AND ARE MORE
- QUICKLY LOCATED THAN THOSE STORED BY
- SIMPLE VARIABLES. ╔ BELIEVE THAT IT IS
- ONLY A MATTER OF HABIT THAT SO MANY
- SIMPLE VARIABLES ARE FOUND IN THE
- CODE. ╫ITH A LITTLE ATTITUDE
- ADJUSTMENT, WE COULD SEE THIS CHANGE.
- ╔ CANNOT SEE ANY DIFFICULTY IN
- DECLARING ┴╠╠ VARIABLES EARLY IN THE
- PROGRAM NOR WITH DECLARING THE MOST
- HEAVILY USED SIMPLE VARIABLES NEAR THE
- TOP OF THE LIST. ┴ SIMPLE ─╔═
- STATEMENT DOES IT ALL. ╘HERE'S NOTHING
- WRONG WITH SOMETHING LIKE
-
- 100 ─╔═┴$,╔,╩,╦,┬$,├$,┬,├,─,╪,┘,┌
-
- AT THE BEGINNING OF YOUR PROGRAM.
-
- ═Y EXAMINATION OF CODE HAS SHOWN
- THAT SOME PEOPLE DO A GOOD JOB OF
- KEEPING THE NUMBER OF VARIABLES SMALL,
- WHEREAS OTHERS SEEM TO BE AFRAID TO
- REUSE VARIABLES AT ALL. ╔T IS NOT
- DIFFICULT TO KNOW WHEN THE VALUE
- STORED BY A VARIABLE WILL NOT BE
- NEEDED AGAIN, SO THAT THE VARIABLE CAN
- BE REUSED.
-
- ┼VEN THOUGH ╔ SPENT HOURS WAITING
- FOR LONG LOOPS TO RUN, HOURS DESIGNING
- AND REVISING TESTS, HOURS READING AND
- HOURS EVALUATING, THIS STUDY HAS BEEN
- GRATIFYING. ╔ BELIEVE THAT ╔ HAVE KEPT
- MY OPINIONS TO A MINIMUM AND HAVE
- PROVED THOSE THINGS THAT ╔ HAVE
- CLAIMED.
-
- ╔ WISH THAT THOSE WHO READ THIS
- COULD LEARN AS MUCH AS ╔ DID. ╔F YOU
- WANT TO LEARN SOMETHING, TRY TO FIGURE
- OUT HOW TO EXPLAIN IT TO SOMEONE ELSE.
-
- ═╩
-
-
- [─┴╓┼'╙ ┴──┼╬─╒═:] ├OMPUTERS ARE
- NECESSARILY LOGICAL. ╨URE REASON AND
- SCIENTIFIC METHOD -- AS DISPLAYED BY
- ═AURICE -- ARE THE ONLY ANSWERS TO
- WILD RUMORS AND HALF-TRUTHS. ╘HIS GOES
- FOR OPERATING SYSTEM ISSUES AND
- VIRUSES! ╚AS [ANYONE] SPENT EVEN A FEW
- MOMENTS TRYING TO SCOPE OUT WHY
- ╫INDOWS HANGS?
-