Le Mon, 13 Jan 2025 14:46:20 +0100, kurtz le pirate a écrit :
Je veux porter cette fonction dans un autre environnement, et c'est là
qu'il y a des problèmes dus à la saturation de la pile.
Il y a moyen de maitriser, mais ce n'est pas toujours évident. Imagine
qu'il existe une fonction baguette-magique qui transforme ta fonction
récursive en fonction «linéaire» (je mets les guillemets à «linéaire»
parce que ça veut dire autre chose), il y a beaucoup de chance que ta
fonction sortie de la boîte magique) soit aussi gourmande en pile et en
mémoire. Il y a souvent moyen (voir ma première phrase) de corriger cette
tendance, mais si ce n'est pas une dead-lock, que lorsqu'il a suffisamment
de ressources, il se termine,il vaut mieux tuner le système hôte (si c'est
une machine virtuelle, c'est facile de tricher en lui donnant plus de
ressourc)e, autrement c'est précisément ces limites qui donne tout
l'intérêt
à régler finement ces paramètres (ploum ploum, la taille de la (ou des)
piles, quitte à dédier une pile à l'application que tu essaie de porter :
l'avantage c'est que tu ne change ni le code C, ni les capcités
de la machine). Tu intervient entre les deux (mais il faudra quand même
recompiler le programme. Quel est le système de la machine source ? celui
de la machine cible (et sa RAM et son CPU (nombre de cœurs, nombre de
thread). Comme je disais plus haut, il s'agit de ne toucher qu'au système
d'exploitation (taille du swap, taille de la pile, RAM Disks inutiles et
gourmands) et soit d'ajuster la pile système soit adjoindre une pile au
programme (ce qui nécessite quelques ajustements (et tu pourra revenir sur
fclc pour ça) mineur en tout cas moindre que la mise à plat de ton
programme). Il faut que tu saches un truc : c'est que les processeurs
actuels sont tout à fait capables de "mettre à plat" le code machine
qu'ils ingurgitent. C'est une optimisation qu'ont tous les processeurs
modernes. Quel est le système-hôte (je sais que l'autre système est un
linux, c'est pourquoi je mets le suivi sur fcolc.
Essaie aussi de voir s'il n'y a pas une fonction standard qui fait
exactement ce que tu veux, ou qui puisse suffisamment être paramétrée pour
faire l'affaire.
bèlané, lasse en thé et toutes ces sortes de chose.
-- Il y a beaucoup de choses que nous aimerions jeter si nous n'avionspas peur que d'autres les ramassent. -+- Oscar Wilde -+-