Implementation dependent.
Irrelevant.

> On Oct 6, 2016, at 3:33 AM, Erling Hellenäs <[email protected]> wrote:
> 
> Hi all !
> 
> This test with an immutable list class shows how you can get a copy with one 
> changed element in 12 microseconds while the same copy with one changed 
> element with a non-immutable array takes 15 milliseconds.
> 
> The tests are repeated, but it's the second test that counts.
> 
>   let mutable a = ImmList<int>.Empty
>    let mutable b = null;
>    let mutable c = null;
>    a <- a.AddFirstRange([1 .. 10000000])
>    let stopWatch = System.Diagnostics.Stopwatch.StartNew()
>    b <- a.Update(5000000,-1);
>    stopWatch.Stop()
>    printfn "%f" stopWatch.Elapsed.TotalMilliseconds
>    //6.442300
>    printfn "%A %A" (a.TryGet(5000000)) (b.TryGet(5000000));
>    //5000001 -1
>    let stopWatch = System.Diagnostics.Stopwatch.StartNew()
>    c <- a.Update(5000000,-1);
>    stopWatch.Stop()
>    printfn "%f" stopWatch.Elapsed.TotalMilliseconds
>    //0.011900
>    let a = [|1 .. 10000000|]
>    let stopWatch = System.Diagnostics.Stopwatch.StartNew()
>    let b = Array.copy a;
>    b.[5000000] <- -1
>    stopWatch.Stop()
>    printfn "%f" stopWatch.Elapsed.TotalMilliseconds
>    //15.108700
>    printfn "%i %i" a.[5000000] b.[5000000];
>    //5000001 -1
>    let stopWatch = System.Diagnostics.Stopwatch.StartNew()
>    let c = Array.copy a;
>    c.[5000000] <- -1
>    stopWatch.Stop()
>    printfn "%f" stopWatch.Elapsed.TotalMilliseconds
>    //14.760200
> 
> Cheers,
> 
> Erling Hellenäs
> 
> 
> On 2016-10-05 02:34, Xiao-Yong Jin wrote:
>>> On Oct 4, 2016, at 2:01 PM, Louis de Forcrand <[email protected]> wrote:
>>> 
>>> Maybe add a third setting to 9!:53 which copies a at the start of a tacit 
>>> verb involving in place operations?
>> This is a good compromise between speed and sensible intuition.
>> I guess a memcpy only when in-place-operation is detected wouldn't be slower 
>> in general than previous non-in-place operations.
>> This could certainly be the default option.
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to