9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Martin Neubauer <m.ne@gmx.net>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] Fun with libthread 1: The Sieve
Date: Fri,  6 Jun 2008 11:55:32 +0200	[thread overview]
Message-ID: <20080606095532.GA998@shodan.homeunix.net> (raw)
In-Reply-To: <8BE506AC-687A-4D6B-AB03-7E9B75BBB0C4@mac.com>

Very amusing. However, I'm not sure what you are trying to tell us, besides
that you haven't understood what the O(...) means.

* Pietro Gagliardi (pietro10@mac.com) wrote:
> Hello. I decided to teach myself the 33 libraries of Plan 9 (even  
> those that I partially know), and I started with libthread, Sape's  
> implementation of Newsqueak-esque threads in C.
> 
> One of Rob's favorite programs is Doug's Newsqueak Sieve of  
> Eratosthenes. It's a simple Newsqueak program that uses filtration to  
> wipe out prime numbers. I ported it to C: /n/sources/contrib/pietro/ 
> sieve.c. The executable takes an argument determining how many prime  
> numbers to print; the default is 100.
> 
> sieve() is spawned with a channel that is sent the prime numbers. It  
> first spawns counter() with a new channel. This channel is given all  
> integers n where n = 2, 3, ... . We will call the original channel  
> "primes" and the new channel "c".
> 
> We now send primes the first value received from c. This is going to  
> be a prime number. Now, a new thread called filter() is called with  
> three components: this prime number, c, and a new channel newc. It  
> reads values from c, and if they are not factors of the original prime  
> number, sends them via newc. This next part is magic: c becomes newc.  
> So the next time we get a value from c, it will give us the first  
> prime returned from filter. Lather, rinse, repeat. Pike's video shows  
> you this graphically.
> 
> So this is the part of the story subtitled "O Isn't That Big Anymore."  
> This was all done yesterday, June 4, 2008. I decided to compare the  
> running time of the sieve to primes(1), a program that, given start  
> and end primes, prints all primes between start and end inclusive. The  
> manual page claims it runs in time O(√(N)).
> 
> 	% time sieve 205963 > sieve.out
> 
> That's right -- I'm finding the first 205,963 prime numbers. It runs  
> from around 7:00 PM EST 4 June 2008 to around 9:00 PM or 10:00 PM 5  
> June 2008, when I come home from band practice, when I notice that  
> QEMU froze probably due to some other background processes (which is  
> normal behavior, unfortunately) after storing the 25,511th prime  
> (293,681). So to get that far, I would imagine Doug's program to be  
> O(N^N) or O(N!). Who knows?
> 
> Note that due to primes' syntax I can't time that until I know what  
> the 205,963rd prime number is.
> 
> Pietro
> 
> PS - I don't free channels, making sieve a memory hog as well as a CPU  
> cycle hog.



  reply	other threads:[~2008-06-06  9:55 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-06  3:09 Pietro Gagliardi
2008-06-06  9:55 ` Martin Neubauer [this message]
2008-06-06 10:19   ` roger peppe
2008-06-06 10:23   ` Pietro Gagliardi
2008-06-06 11:29     ` Martin Neubauer
2008-06-06 14:00 ` roland.kaufmann
2008-06-06 19:02   ` Pietro Gagliardi
2008-06-06 19:28     ` erik quanstrom
2008-06-06 15:35 ` Russ Cox

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080606095532.GA998@shodan.homeunix.net \
    --to=m.ne@gmx.net \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).