2016-05-28 8 views
3

Ich habe eine Byte-Array, die ich komprimieren möchte. (Größe 400 Byte auf AVG) .Ich habe zwei Optionen.Ich halte ein Array von 400 Byte und Stuff Bits.Schließlich sagen die komprimierte Größe ist 300 Byte, so dass ich benutze memcpy, um diese Bytes in ein Array der Größe 300 zu kopieren und zu senden. Sonst kann ich einen Vektor behalten und 400 Byte reservieren und push_back verwenden (hier kann ich den memcpy vermeiden). Ich bekomme eine große Anzahl von Arrays pro Sekunde. Also in einem leistungskritischen Szenario, welche Wahl bessere Leistung bringt?Array-Zuweisung gefolgt von Memcpy oder Vektor mit Reserve?

+0

Es ist nicht klar, was genau Sie tun möchten. Angenommen, Sie haben einen Vektor und füllen ihn mit "push_back". Verwenden Sie _that_ vector dann? Wenn Sie bereits ein Array von 300 Elementen haben, warum verwenden Sie 'memcpy'? –

+0

Wenn ich eine riesige Anzahl von Arrays pro Sekunde bekomme, würde ich persönlich die 'resize' Methode gegenüber' reserve' bevorzugen. Es scheint schneller. –

+0

Ich muss das komprimierte Array senden.So kopiere ich die Bytes, die Teil der komprimierten Daten sind nicht das gesamte Array, das ich zugeordnet, um sie zu halten (wie ich die Größe apriori nicht weiß) @Polfsol –

Antwort

2

Wenn es schnell sein muss, wollen Sie definitiv nicht jedes einzelne Byte push_back eins-zu-eins; Sie möchten eine Massenübertragung durchführen, wie es memcpy tut. Aber Sie können std::copy verwenden, die genauso effizient sein sollte. Für primitive Typen wie char oder int, unter Verwendung von std::vector mit std::copy ist grundsätzlich eine Schicht auf einem rohen Array und memcpy.