Sergey,

  There are so many things that came to mind when I saw your program.

1-  At the end of your email, sourceforge ad says "Go Parallel", Which is
not a bad idea for this highly parallel application.

 There is a similar program "wordcount" listed in my dissertation
(available on unicon.org) that go through directories and count words in
every file using threads (Chapter 7, page 107)

2- Unicon open() already supports " pattern matching that would greatly (I
believe) speedup your program. For example you can do this:
    L := open("*.icn")

   to get a list of all of Unicon source files in the current directory.

  Note: It would be nice if there were a way to tell open() to return files
not only based on a pattern, but also on file attribute to allow something
like "get me all directories in the current directory", or "get me all read
only file". There are a lot of situations where filtering directory names
for example is very useful - like this program

3- The program on Rosetta Code is not optimized for speed. You can minimize
the number of lists created and put() by careful rewriting of the code.

4- Depending on how deep the directory tree is, there might be a lot of I/O
going on. A slow disk might limit how fast you can go regardless of how
optimized your code is.

I will share results if get around trying any of these options.

Cheers,
Jafar



On Sat, Jan 10, 2015 at 5:51 AM, Sergey Logichev <[email protected]>
wrote:

> Hello all!
>
> Now I investigate the best approach to get list of files in specified
> directory and beneath in Unicon.
> I found excellent example at rosettacode.org:
> http://rosettacode.org/wiki/Walk_a_directory/Recursively#Icon_and_Unicon
>
> I reconstructed this one to implement matching of filenames to specified
> pattern (regular expression). My program recursively walks a directory and
> prints appropriate filenames. The same as dir (ls) does. All working fine
> except performance. If directory has a lot of subdirs the search may took
> 10-20 seconds before starting output. Could you provide some advices how to
> enchance the performance?
>
> Some notes how to make and use. Unpack content of udir.zip to your local
> directory. Define which environment you use in env.icn file - uncomment
> line "$define _UNIX 1" in the case of UNIX. Nothing to do in the case of
> Windows.
> Make udir program:
> unicon -c futils.icn
> unicon -c options.icn
> unicon -c regexp.icn
> unicon udir.icn
>
> Usage: udir -f<filemask>
> for example: udir -f*.icn
> shall list of icn files in the current dir and all its subdirectories.
>
> Best regards,
> Sergey Logichev
>
>
> ------------------------------------------------------------------------------
> Dive into the World of Parallel Programming! The Go Parallel Website,
> sponsored by Intel and developed in partnership with Slashdot Media, is
> your
> hub for all things parallel software development, from weekly thought
> leadership blogs to news, videos, case studies, tutorials and more. Take a
> look and join the conversation now. http://goparallel.sourceforge.net
> _______________________________________________
> Unicon-group mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/unicon-group
>
>
------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________
Unicon-group mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/unicon-group

Reply via email to