Bonjour à tous,
Je dois construire une appli de traitement de données multimodales (images et signaux) temps-réel avec une période de traitement fixe de 20ms.
- Pour information, je dispose d'une accélération matérielle à base de FPGA -
Le post ici ne concerne nullement les algorithmes, déjà choisis et peu gourmands, mais le stockage et le post traitement de ces données sur les 15 ms restantes dans la RAM.
Comme le programme global d'analyse de données doit être au maximum modulaire, et avoir quand même de super performances, j'avoue être un peu tremblant dans mes choix de structure pour mes données.
Comme j'ai beaucoup de données de types différents, ma première idée était de partir sur une std::map<std::string, Data*> avec Data une interface abstraite... On s'en sort avec un bête cast à faire (comme le tuto de Laurent )
Je me demande si pour plus d'évolutivité (arrivée de nouveaux signaux), je ne devrais pas partir sur quelquechose de plus "sioux" genre un boost::multi_index, avec une possibilité de tri suivant plusieurs critères : temps, noms des signaux...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 struct Data { double m_time; std::string m_name; }; struct ImageD : public Data { std::vector<double> m_data; };
Ce serait vraiment une structure idéale pour moi, mais j'ai vraiment peur que l'insertion systématique de nouveaux éléments (environ 1Go au bout d'une minute et fin d'expérience ) plombe mes performances.
Ma question est donc : dans mon cas (contraintes assez fortes), est-ce qu'il faut oublier ce genre d'approche trop "haut-niveau" et faire plus simple (mon premier exemple en haut).
J'attends vos remarques / suggestions, et je pense me lancer dans des benchmarks derrière.
![]()
Partager