Another problem I noticed is that the elements in the vector in the rust code 
are `uint` (which on most systems is 64-bit) and in the C code you’re inserting 
`int`s (32-bits on most systems).




That’s not really a fair contest.




  - Clark

On Thu, Sep 25, 2014 at 6:26 PM, François-Xavier Bourlet
<[email protected]> wrote:

> and hitting reply-all is better...
> quick update: the implementation with unsafe & ptr is not slower. I
> just have too many cores + power-boost to get a clean benchmark every
> time.
> Running the benchs with n=1 billions  (instead of 100 millions) gives me:
> ==> vector_grow_c.csv <==
> 1000000000,5.084604
> ==> vector_grow_rust.csv <==
> 1000000000,5.217096
> ==> vector_grow_rust2.csv <==
> 1000000000,4.912147 (yes, getting rid of the second push works!)
>  $ rustc --version
> rustc 0.12.0-pre-nightly (0e784e168 2014-09-16 23:26:11 +0000)
>  $ gcc --version
> gcc (GCC) 4.9.1
> On Thu, Sep 25, 2014 at 6:18 PM, François-Xavier Bourlet
> <[email protected]> wrote:
>> On my machine I get:
>>
>> C: 100000000,0.509391
>> rust: 100000000,0.466069
>>
>> So rust is faster for me.
>>
>> For fun, I tried to write the rust version using unsafe and
>> pre-allocation to remove the second push:
>>
>> let mut m = Vec::from_fn(101, |_| 0);
>> let pm = m.as_mut_ptr();
>> let mut m_idx = 1i;
>>     let t = time::precise_time_ns();
>>     for _i in iter::range_step(0, n, n/100) {
>>         for j in range(0, n/100) {
>>             v.push(j);
>>         }
>>      unsafe {
>>         ptr::write(pm.offset(m_idx as int),  time::precise_time_ns() - t);
>>       }
>>      m_idx += 1;
>> }
>>
>> But I get a little slower result (maybe I am doing something wrong
>> with the unsafe and ptr):
>> rust2: 100000000,0.472749
>>
>> And just to be sure, I tested getting rid of iterators (using manual
>> while loop instead) and this changed nothing (as expected).
>>
>> my 2 cents
>>
>>
>> On Thu, Sep 25, 2014 at 4:05 PM, Clark Gaebel <[email protected]> wrote:
>>> You’re also timing two pushes, as opposed to a push and an array write in
>>> the C version.
>>>
>>>
>>>
>>> On Thu, Sep 25, 2014 at 3:59 PM, Daniel Micay <[email protected]> wrote:
>>>>
>>>> <signature.asc>
>>>
>>>
>>>
>>> _______________________________________________
>>> Rust-dev mailing list
>>> [email protected]
>>> https://mail.mozilla.org/listinfo/rust-dev
>>>
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to