Ok.. seems like the short lifespan of the agent-threads makes it hard
for the program
to actually start using its (in this case 2) multiple cpu's.

The next program has no problem filling both cpu's together for 199%
(top, linux), whilst the simulation
has trouble getting above 110%, but occasionally jumps higher to up to
199%.

I'll go and build a version in which the agents are kept alive and
useful longer.

(defn fib [n] (reduce * (range 2 (inc n))))

(defn doublesend
  []
  (do
    (def myagent (agent 100000))
    (def myagent2 (agent 100000))
    (send-off myagent fib)
    (send-off myagent2 fib)
    ))

(doublesend)

On Dec 14, 3:07 pm, bOR_ <boris.sch...@gmail.com> wrote:
> The order doesn't matter, and a somewhat mixed order would even be a
> welcome side-effect of the whole concurrency bit.
>
> What does worry me is that the agents are very short-lived. The
> longest of these tasks takes 0.5msec (any evolution event), so I am
> not sure if spawning all these agents is worth the overhead.
>
> There are several other possibilities: I could have each place in the
> world be a single agent, which just continuously cycles through the
> events, even if there is
> no host occupying the place. I could also tie hosts to agents (which I
> think is somewhat like ant.clj does). Will look into it.
>
> On Dec 14, 2:55 pm, Chouser <chou...@gmail.com> wrote:
>
> > On Sun, Dec 14, 2008 at 8:49 AM, bOR_ <boris.sch...@gmail.com> wrote:
>
> > > Thanks! Needed only a small change then :)
>
> > > (time
> > >  (do
> > >   (dotimes i popsize
> > >            (doseq a [birth death infect infect evolve evolve evolve
> > > evolve evolve]
> > >                   (send-off (agent i) a)))
> > >   (dosync (commute year inc))))
> > > (report)
>
> > Note that you've now got popsize*9 agents, and the actions in your
> > vector are not guaranteed to happen in order for any given 'i' -- I
> > don't know if that matters to you or not.
>
> > --Chouser
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to