Re: byte[] resizen? (vergleich der Methoden)
From: Thomas Scheidegger [MVP] (spam.netmaster_at_swissonline.ch)
Date: 01/20/05
- Next message: Dennis Nusser: "Re: byte[] resizen? (vergleich der Methoden)"
- Previous message: Arne Janning: "Re: C# und MySQL"
- In reply to: Dennis Nusser: "Re: byte[] resizen? (vergleich der Methoden)"
- Next in thread: Dennis Nusser: "Re: byte[] resizen? (vergleich der Methoden)"
- Reply: Dennis Nusser: "Re: byte[] resizen? (vergleich der Methoden)"
- Messages sorted by: [ date ] [ thread ]
Date: Thu, 20 Jan 2005 12:58:55 +0100
> ich habe mir deine Aussage noch angesehen und möchte gerne wissen wie du das
> untermauerst.
> [MethodImpl(MethodImplOptions.InternalCall)]
> public static extern void BlockCopy(Array src, int srcOffset, Array dst, int
> dstOffset, int count);
> sollten diese Methoden nicht gleich effizient sein?
ich hab den konkreten Performance - Unterschied nicht gemessen,
(dürfte nicht sehr gross sein)
aber BlockCopy ist spezifisch für 'primitive type' - Arrays optimiert :
Wenn ich etwa den Rotor/SSCLI-Source anschaue
http://dotnet.di.unipi.it/Content/sscli/docs/doxygen/clr/vm/comutilnative_8cpp-source.html
Buffer::BlockCopy
dann werden dort nur die Array-Grössen überprüft,
dann mittels einer native m_memmove die Daten im Speicher 1:1 kopiert.
http://dotnet.di.unipi.it/Content/sscli/docs/doxygen/clr/vm/comsystem_8cpp-source.html
Die Array.Copy ist viel universeller,
kann auch Element für Element kopieren und dabei ggf auch boxing/unboxing
oder Type-widening machen.
Daher gibt es wohl etwas Overhead.
Siehe Rotor, SystemNative::ArrayCopy
http://dotnet.di.unipi.it/Content/sscli/docs/doxygen/clr/vm/comsystem_8cpp-source.html
Der eigentliche Kopiervorgang geschieht (falls identische Value-Type Array-Typen)
dann auch per native m_memmove.
Rotor SSCLI:
http://msdn.microsoft.com/net/sscli/
wobei nicht 100% mit der .NET 1.1 Runtime vergleichbar...
-- Thomas Scheidegger - MVP .NET - 'NETMaster' http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/
- Next message: Dennis Nusser: "Re: byte[] resizen? (vergleich der Methoden)"
- Previous message: Arne Janning: "Re: C# und MySQL"
- In reply to: Dennis Nusser: "Re: byte[] resizen? (vergleich der Methoden)"
- Next in thread: Dennis Nusser: "Re: byte[] resizen? (vergleich der Methoden)"
- Reply: Dennis Nusser: "Re: byte[] resizen? (vergleich der Methoden)"
- Messages sorted by: [ date ] [ thread ]