Struct in Array möglichst schnell übergeben und umgekehrt.
-
Ich suche nach einem Trick, um Structs in Arrays möglichst schnell zu übergeben und umgekehrt.
struct strdaten { int x1; int x2; int x3; } daten; int array[2]; void main() { // Werte in Struct schreiben daten.x1=10; daten.x2=99; daten.x3=44; // Normalerweise so: array[0]=daten.x1; array[1]=daten.x2; array[2]=daten.x3; // Umgekehrt: daten.x1=array[0]; ..... // Trick?: return 0; }
Als Trick dachte ich daran den Speicherbereiche vom Arrayinhalt mit den Speicherbereichen von x1,x2 und x3 zu überschreiben. Geht das? Wenn ja wie? Bringt es überhaupt ein Geschwindigkeitsvorteil? Ich muss das ca. 20 Millionenmal machen.
Danke.
-
Bringt es überhaupt ein Geschwindigkeitsvorteil?
Vermutlich optimiert das jeder mittelmoderne Compiler eh durch Ausrichtung.
Ich muss das ca. 20 Millionenmal machen.
Bestimmt kannst du hier am meisten optimieren.
Ich suche nach einem Trick, um Structs in Arrays möglichst schnell zu übergeben und umgekehrt.
Musst du das wirklich, oder ist vielleicht eine Übergabe der Adresse/Referenz möglich?
-
Btw: es heißt int main() und bitte benutze die cpp tags (links neben den code tags)
-
Folgendes würde dann wahrscheinlich nicht gehen:
struct strdaten { int x1; int x2; int x3; } daten; int array[2]; int main() { // Werte in Struct schreiben daten.x1=10; daten.x2=99; daten.x3=44; // Trick: &array=&daten; return 0; }
Zu einem würde das Format nicht passen und zum anderen hätt ich probleme wenn ich daten ändere, oder?
-
was du machen willst, klappt so nicht.
kopiere einfach per memcpy() das ist schnell genug.
oder arbeite mit zeiger, und kopiere nur den zeiger, nicht aber den speicher herum. klappt aber nicht, wenn du wirklich kopieren musst.