Holen Sie sich subarray of byte
In C#, Wie kann ich sub-array von bytes, wie dies
byte[] arrByte1 = {11,22,33,44,55,66}
Brauche ich die Referenz für die sub-array mit zwei bytes, die wie 33 und 44 Werte.
Fand ich mehrere Möglichkeiten gibt es, wie Array.Kopieren, ArraySegment, LINQ (Springen und Fahren) in C#. was ist die beste Lösung für Sie, dass aus performance-Sicht?
Verwenden
Was ist die Quelle dieser bytes? Und wie groß ist das array? Sie finden möglicherweise, Stream-Klassen nützlich..
"was ist die beste Lösung für Sie, dass aus performance-Sicht" - glaubst du wirklich, dass dies der Flaschenhals in der Leistung für Ihre Anwendung? Der beste Weg, um eine gute Leistung zu setzen, ist die Leistung Ziele. Dann, diese Ziele zu setzen beiseite und Schreibe einfach einfachen, klaren, verständlichen code. Dann, Messen die Leistung. Wenn es erfüllt die Ziele, die Aufgabe zu erledigen, und bewegen Sie auf die nächste Aufgabe. Wenn Sie nicht kennenlernen der Ziele, isolieren wo der performance-Engpass wird. Es ist unwahrscheinlich, hier zu sein.
Array.Copy
.Was ist die Quelle dieser bytes? Und wie groß ist das array? Sie finden möglicherweise, Stream-Klassen nützlich..
"was ist die beste Lösung für Sie, dass aus performance-Sicht" - glaubst du wirklich, dass dies der Flaschenhals in der Leistung für Ihre Anwendung? Der beste Weg, um eine gute Leistung zu setzen, ist die Leistung Ziele. Dann, diese Ziele zu setzen beiseite und Schreibe einfach einfachen, klaren, verständlichen code. Dann, Messen die Leistung. Wenn es erfüllt die Ziele, die Aufgabe zu erledigen, und bewegen Sie auf die nächste Aufgabe. Wenn Sie nicht kennenlernen der Ziele, isolieren wo der performance-Engpass wird. Es ist unwahrscheinlich, hier zu sein.
InformationsquelleAutor Ankush Bindra | 2015-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfache perfomance-test:
Ergebnis:
Perfomance test auf große Daten:
Ergebnis:
Wie Sie sehen, auf große Daten-linq Schwierigkeiten haben.
sw.Restart()
für die Linq-test, ansonsten dersw.ElapsedMilliseconds
umfasst auch dieArray.Copy()
Millisekunden.Hinzugefügt
Buffer.Copy()
test hier: gist.github.com/fraguada/301fe31b939e6889514969cb1bbec37cInformationsquelleAutor General-Doomer
Verwenden Array.Kopieren
Beispiel :
Format :
InformationsquelleAutor Null Pointer
Puffer.BlockCopy schneller ist als Array.Kopie für byte-arrays.
Buffer.BlockCopy()
ist in der Tat schneller. Ich habe ein gist mit einem test fürBuffer.BlockCopy()
undArraySegment<int>().ToArray()
: gist.github.com/fraguada/301fe31b939e6889514969cb1bbec37cInformationsquelleAutor Simon Giles