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?
3
A
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
.
Verwandte Themen
- 1. Memcpy von überlappenden Puffern
- 2. ASP.NET MVC Mitgliedschaft Reserve
- 3. Mit memcpy in C++
- 4. Memcpy Strukturvariablen
- 5. Internes Neuzuordnungsverhalten von QByteArray vs reserve()
- 6. Skaktion gefolgt von Szenenübergang
- 7. C: memcpy() mit NULL-Zeichen
- 8. Array von Vektoren oder Vektor von Arrays?
- 9. Javascript Rückwärtsreferenz gefolgt von Nummer
- 10. Vektor von Strukturen mit Vektor der Ganzzahl
- 11. Amazon AWS Reserve Instanz ablaufen
- 12. copy_to_user vs memcpy
- 13. List.clear(), gefolgt von List.add() nicht
- 14. Wie funktioniert die interne Implementierung von memcpy?
- 15. WM_ERASEBKGND nicht gefolgt von WM_PAINT
- 16. C++: Wie memcpy mit Zeiger ** verwenden?
- 17. Ist std :: vector :: insert reserve per Definition?
- 18. Memcpy Daten von std :: vector zugrunde liegenden Objekte
- 19. Ist memcpy einer trivial kopierbaren Konstruktion oder Zuweisung?
- 20. Vektor von Funktionen mit 2 oder mehr zufälligen Argumenten
- 21. Schreiben/Lesen von einem Vektor (oder ArrayList) mit zwei Threads
- 22. Verhalten von Doppelpunkt-Operator (:) mit Matrix- oder Vektor Argumente
- 23. Seltsames Verhalten von printf nach memcpy
- 24. asynchrones memcpy in Linux?
- 25. Absturz bei der Verwendung von memcpy?
- 26. C# memcpy Äquivalent
- 27. die Reservespeicher von C++ Vektor Ändern
- 28. Verkleinert resize() zu einer kleineren Größe die Reservierung von früheren reserve() gemacht?
- 29. C++ mit std :: Vektor über Grenzen
- 30. Reihenfolge gefolgt von kumulativer Summe + von
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'? –
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. –
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 –