On Fri, Apr 1, 2016 at 3:45 PM, Carl <[email protected]> wrote:
> Hello,
>
> Julia is great.  I'm new fan and trying to figure out how to write simple
> coroutines that are fast.  So far I have this:
>
>
> function task_iter(vec)
> @task begin
> i = 1
> for v in vec
> produce(v)
> end
> end
> end
>
> function task_sum(vec)
> s = 0.0
> for val in task_iter(vec)
>                 s += val
> end
> return s
> end
>
> function normal_sum(vec)
> s = 0.0
> for val in vec
> s += val
> end
> return s
> end
>
> values = rand(10^6)
> task_sum(values)
> normal_sum(values)
>
> @time task_sum(values)
> @time normal_sum(values)
>
>
>
>   1.067081 seconds (2.00 M allocations: 30.535 MB, 1.95% gc time)
>   0.006656 seconds (5 allocations: 176 bytes)
>
> I was hoping to be able to get the speeds to match (as close as possible).
> I've read the performance tips and I can't find anything I'm doing wrong.  I
> also tried out 0.5 thinking that maybe it would be faster with supporting
> fast anonymous functions but it was slower (1.5 seconds).

Tasks are expensive and are basically designed for IO.
~1000x slow down for this simple stuff is expected.

>
>
> Carl
>

Reply via email to