Chris Sheffield wrote:

I know recursion has been discussed in the past, and I'm wondering if anyone has ever run into any limits (i.e. memory problems) with recursion in Rev. I am working on a little backup utility for my own use, and I'm wondering what would happen if I decided to back up my entire hard drive? Would Rev choke on that? I realize it could potentially take hours. Would I start getting out of memory errors? The utility uses a directory walking function to create a list of all sub folders and files to be backed up.

Anyone have some detailed results with this type of thing?

I doubt that you'd run into recursion limits walking a disk (unless you have exceptionally large disks, or deeply nested directories) - but it's better to to avoid the possibility than to get a nasty surprise 3 hours into a backup ....

Two suggestions.

1. Two phases. Generate a complete list of files *first*, then operate on them. This has two advantages; the resources for recursion aren't needed at the same time as the resources for the real work, and more importantly - if there are problems with limits, you find out in the first few minutes, before you have wasted much time.

A directory walk simply storing file names runs at about 2000 files per second (on my slow laptop) up to about 7000 per second on a moderate desktop. (Obviously very dependent on the directory structure).

2. Iterate instead of recurse. Change your recursive call to a "send ... to me in 0 secs", and check the pendingmessages to tell when to exit (by "send .... to another"). Watch out for the need to quote directory names (I have directory names containing "comma" that confused my first attempt to do this).

This has no worries about limits on recursion. (Are there limits on the number of pending messages ? Or performance issues with (tens of) thousands of pending messages ? Hmmmmm).

This ran slower half the speed of the simple recursive method for me. Could probably be optimized if needed.

Personally I'd just do the first of these - but the second one was an interesting exercise .....


--
Alex Tweedly       http://www.tweedly.net



--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.338 / Virus Database: 267.10.0/63 - Release Date: 03/08/2005

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to