Effiziente Einbau von vorgegebenen Matrizen im Quelltext



  • Hallo!

    Ich möchte fest vorgegebene Matrizen (Größe etwa bis 200x1000), die nur 1en und 0en enthalten im Quelltext einbauen und im Code z.B. als EIGEN::Matrix verwenden.

    Was ist denn hierfür eine effiziente Methode (Speicherbedarf, Kompilierzeit, Rechenzeit)?

    1.Als Folge von Integer-Werten in Form eines std::vector definieren und die bits direkt verwenden? Dann benötige ich allerdings pro Zeile (100 Werte) mehrere int-Werte (max 32 bit).

    2.1-0-Folge als String umformulieren zb. per ASCII und wieder in bits umwandeln?
    Allerdings scheint mir das umständlich und nicht effizient.



  • Wenn der Speicherbedarf der kritische Punkt ist, sind einzelne Bits natürlich nicht zu schlagen. Anstatt dir da selber etwas zu basten kannst du aber std::bitset oder std::vector<bool> verwenden.



  • Es ist weniger der Speicherbedarf. Wichtiger ist die Kombile- und Rechenzeit.
    Bei Umwandlung in einen String scheint diese arg zu leiden.



  • Machs doch einfach in eine extra Datei, die du dann laedst. Ansonsten gibts natuerlich auch noch Moeglichkeiten die Daten direkt in die executable einzufuegen, z.b. als eigenes Segment, aber nicht plattformuebergreifend.



  • TGGC schrieb:

    Ansonsten gibts natuerlich auch noch Moeglichkeiten die Daten direkt in die executable einzufuegen, z.b. als eigenes Segment, aber nicht plattformuebergreifend.

    Müsste der Kompiler nicht schlau genug sein das selber zu machen, wenn ich das als statisches constantes Array erstelle?


Anmelden zum Antworten