>>>> I need to maintain an integer array to be used as a FIFO stack. I
>>>> will .append() up to 10000 values, and when the array reaches that
>>>> size, I will "cut off" the oldest (lowest) 5000 entries. Right now
>>>> I'm doing this by using .remove() in a loop.
>>>>
>>>> The thing needs to be as time-efficient as possible, so I wonder if
>>>> it would be more efficient if I created a new array and copied over
>>>> the last 5000, rather than removing the first 5000.
>>>>
>>>> Has anybody experience with this kind of operations, so that I don't
>>>> need to test it on my own?
>>>>         
>>> The fastest solution given what you've described would be an array of
>>> 10,000 elements (or even a memory block, depending on what types of
>>> values they are), which you don't resize. Instead, you would keep
>>> head and tail position values, and maintain everything that way. When
>>> you reached the end of the array, you'd wrap around the other side.
>>>
>>>       
>> Howdy,
>> I'm afraid I didn't quite follow what you mean there. Could someone  
>> post
>> a simple example?
>>     
>
> Imagine the 10,000 elements are arranged, not in a line, but in a  
> circle. You keep track of two numbers, representing where in the  
> circle the head and tail of your list are. When these meet, you  
> extract the first 5,000 elements from the list, moving the tail up.  
> Now, because it's a ring, you have room in front of the head of the  
> list for another 5,000 elements. Lather, rinse and repeat.
>
> Regards,
>
> Guyren G Howe
> Relevant Logic LLC
>
> guyren-at-relevantlogic.com ~ http://relevantlogic.com
>
> REALbasic, PHP, Ruby/Rails, Python programming
> PostgreSQL, MySQL database design and consulting
> Technical writing and training
>   
Ah, ok. Too simple for my un-caffeinated mind. Here's another 
"brilliant" question to display the depth of my experience: What is the 
advantage of doing it this way, versus a looping remove? Don't you end 
up doing essentially the same task when extracting?

Thanks,
Fargo
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to