Bonjour à toutes et à tous,
Je souhaiterais avoir des opinions sur une question de programmation en C. Le problème est le suivant: j'ai une série temporelle qui décrit le déplacement d'une particule dans un espace bidimensionnel. Je calcule le nombre de passages de cette particule dans chaque cellule d'un grand maillage en 2D pour estimer une espèce de densité (je ne rentre pas dans les détails). J'ai choisi de me placer localement dans une portion du maillage pour chaque couple de position de la particule entre 2 temps, afin de ne pas avoir à parcourir tous les nœuds du maillage pour savoir s'ils ont 'vu' la particule passer ou non (long!).
Du coup, je me retrouve à sélectionner les nœuds qui sont voisins immédiats des observations que je traite et à stocker ces nœuds (ou 'sous-maillage') pour faire un calcul sur chacun d'eux. Il y a donc autant de sous-maillages que de positions de la particule. J'ai une contrainte de temps, l'algorithme doit être rapide car calculé sur un grand nombre de particules. Je ne connais pas la taille à priori de chaque sous-maillage, mais j'ai un indice: les déplacements sont rarement grands.
Est-ce qu'il est préférable de :
- stocker ce 'sous-maillage' dans un tableau dynamique (la taille de chaque sous-maillage étant différente) contenant exactement les nœuds d'intérêt et que je libère après chaque utilisation (ce qui suppose de récréer ce tableau à chaque position),
- d'avoir un grand et unique tableau statique ou je mets les nœuds d'intérêt et que je n'aurais qu'à vider/réinitialiser à chaque utilisation après calcul de la stat qui m'intéresse,
- travailler directement sur le maillage d'origine avec des pointeurs qui définiront/contiendront mon sous-maillage,
- ne pas s'embêter avec un 'sous-maillage' et parcourir brutalement pour toutes les positions tous les nœuds du maillage et estimer ma stat (sachant que bcp de nœuds ne serviront à rien pour de petits déplacements de la particule, ce qui arrive souvent)
- opter pour une autre alternative ?
Sachant que:
- Dans tous les cas, chaque sous-maillage doit être réinitialisé (ou ses valeurs remises à zéro) pour chaque position de la particule
- Les calculs sont effectués sur un serveur, pas de problème de mémoire (pour l'instant),
- Les calculs sont déjà parallélisés,
- Quelques chiffres: Il y a environ 30000 positions pour chaque particule, le maillage contient 1 à plusieurs millions de nœuds
Merci par avance!
Partager