Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique. |
un symbole qui contient le timestamp unix de l'appel a gcc? Nspire wiki ~ TI68k/z80 RSA factoring project |
Encore eût-il fallut que je sachasse ce que fûte un timestamp ^^ Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique. |
une date+heure+truc par exemple ? La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork. |
le nb de secondes depuis le 1er janvier 1970 en général (et oui, ça foutra la merde sur tous les systèmes 32 bits en 2038 ^^) Nspire wiki ~ TI68k/z80 RSA factoring project |
AMHA, ce n'est pas très pratique de devoir écrire "zs" à chaque fois qu'on veut faire un calcul. Le calcul formel est mieux intégré dans AMS. Mainteneur de TIGCC (le vrai) (Co-)Administrateur du Forum TICT et TIGCC (anglophone) Modérateur sur MobiFiles (germanophone) Fondateur de #tigcc sur irc.freequest.net (UTF-8) CalcForge – le nouvel hébergement de CalcForgeLP (ex TiLP) et Emu-TIGCC (ex TiEmu) Participez à la reprise de Ti-Gen! |
franchement, ça craint, c'est clair ( ) Nspire wiki ~ TI68k/z80 RSA factoring project |
Kevin Kofler (./94) : La prochaine tu liras tout ou tu te coucheras avant si tu es fatigué, avant d'écrire. Cinq font un et un font cinq : le tout est UNITE C'est dans l'incompréhension que je suscite que je trouve ma raison d'être. Je suis moi , et je le suis parce que les autres ne le sont pas, et que ce sont eux qui forment ma personne. Inconscience et déraison sont source d'imagination. Au delà de ma conscience et de mon inconscient, mes rêves créent la réalité. |
Sasume (./95) : Hé, ce n'est pas ça que je voulais dire! Mainteneur de TIGCC (le vrai) (Co-)Administrateur du Forum TICT et TIGCC (anglophone) Modérateur sur MobiFiles (germanophone) Fondateur de #tigcc sur irc.freequest.net (UTF-8) CalcForge – le nouvel hébergement de CalcForgeLP (ex TiLP) et Emu-TIGCC (ex TiEmu) Participez à la reprise de Ti-Gen! |
./93: c'est cela, si ce n'est que TI a choisi une date de départ différente, à savoir le 1er janvier 1997, 00h00 dans un certain fuseau horaire J'ai écrit "timestamp de compilation", mais en réalité, c'est plus probablement le timestamp de la signature cryptographique par TI (parce que les FlashApps ont également un timestamp). Sur AMS 2.05 89, le cert field du timestamp (0x326 0x904 0xnnnnnnnn) est stocké à ROM_BASE+0x12033-0x1203A, et le timestamp vaut 0x0699b9e2, c'est à dire qu'il représente le 07/05/2000 (mm/jj/yyyy) 16h31m30s (dans un certain fuseau horaire). Le timestamp d'OurWorld 1.0 est 0x0df33de3. (Rassurez-vous, je ne calcule pas tout ça à la main: quand ils sont appelés avec les bons paramètres, ROM_CALL_504 et ROM_CALL_58E font le boulot à ma place. J'ai documenté au moins le deuxième.) |
Merci à tous. Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique. |
Au passage, ./98: on le sait à peu près tous que tu n'as pas voulu signifier cela A la limite, sans la deuxième phrase, la remarque ./94 n'aurait été que redondante: cf. ma remarque, sur un mode plus humoristique, en ./80 et la réponse de PpHd en ./81. Mais avec la deuxième phrase, le post devient pas constructif: c'est irréaliste d'attendre de PedroM une aussi bonne intégration du CAS que dans AMS, alors que l'introduction du CAS dans PedroM est très récente. D'où les réactions. Pas plus compliqué que cela. |
Build de PedroM avec la suite de tests de MPFR:
Temps pris par ld-tigcc : 10 MINUTES ! Cinq font un et un font cinq : le tout est UNITE C'est dans l'incompréhension que je suscite que je trouve ma raison d'être. Je suis moi , et je le suis parce que les autres ne le sont pas, et que ce sont eux qui forment ma personne. Inconscience et déraison sont source d'imagination. Au delà de ma conscience et de mon inconscient, mes rêves créent la réalité. |
Ton Flash OS a presque la taille de AMS là, il ne faut pas t'attendre à ce que ld-tigcc le linke rapidement. Surtout si tu y mets une test suite qui doit avoir je ne sais pas combien de fichiers objet (probablement beaucoup plus que AMS, même si je ne peux pas le dire exactement parce que les sources de AMS ne sont pas disponibles). (Pour moi, une test suite est quelque chose qu'on rm -rf immédiatement parce que ça met trop longtemps à compiler. C'est ce que je fais avec celles dans GCC et Binutils en tout cas. ) N'oublie pas que ld-tigcc est conçu primairement pour les programmes de <= 64 KO. Mainteneur de TIGCC (le vrai) (Co-)Administrateur du Forum TICT et TIGCC (anglophone) Modérateur sur MobiFiles (germanophone) Fondateur de #tigcc sur irc.freequest.net (UTF-8) CalcForge – le nouvel hébergement de CalcForgeLP (ex TiLP) et Emu-TIGCC (ex TiEmu) Participez à la reprise de Ti-Gen! |
c'est clair sinon c'est un bon stress test pour ld-tigcc Nspire wiki ~ TI68k/z80 RSA factoring project |
Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique. |
Kevin Kofler (./103) : C'est surtout que dans le cadre de tigcc, et d'une cross compilation, ca n'est jamais simple de lancer les tests... Kevin Kofler (./103) : Parce que tu crois que le linkeur GNU ld, met 10 minutes pour linker un programme de 10 Mo. Kevin Kofler (./103) : C'est essentiellement utile pour les développeurs. Cinq font un et un font cinq : le tout est UNITE C'est dans l'incompréhension que je suscite que je trouve ma raison d'être. Je suis moi , et je le suis parce que les autres ne le sont pas, et que ce sont eux qui forment ma personne. Inconscience et déraison sont source d'imagination. Au delà de ma conscience et de mon inconscient, mes rêves créent la réalité. |
Parce que tu crois que le linkeur GNU line, met 10 minutes pour linker un programme de 10 Mo. Pas faux, ça... Un des meilleurs profileurs est callgrind - mais là, 10 minutes en natif, c'est un peu trop long pour qu'il soit facile de faire exécuter le linking à callgrind avec simulation des caches et du HW prefetch. Ca ralentit de plus de deux ordres de grandeur sur ma machine... |
Bah, il n'y a pas grand chose à profiler, la seule structure de données dans ld-tigcc (à part à un endroit du réordonnement de sections qui n'est pas activé ici, où des tableaux sont utilisés) est la liste chaînée. La table de hachage est un concept totalement inconnu de ld-tigcc. Bref, ce n'est pas la peine de chercher longtemps pourquoi ça prend tout ce temps. Mainteneur de TIGCC (le vrai) (Co-)Administrateur du Forum TICT et TIGCC (anglophone) Modérateur sur MobiFiles (germanophone) Fondateur de #tigcc sur irc.freequest.net (UTF-8) CalcForge – le nouvel hébergement de CalcForgeLP (ex TiLP) et Emu-TIGCC (ex TiEmu) Participez à la reprise de Ti-Gen! |
Voilà le code qui va chercher un symbole par son nom:
(et la macro for_each fait exactement ce que vous craignez ). Mainteneur de TIGCC (le vrai) (Co-)Administrateur du Forum TICT et TIGCC (anglophone) Modérateur sur MobiFiles (germanophone) Fondateur de #tigcc sur irc.freequest.net (UTF-8) CalcForge – le nouvel hébergement de CalcForgeLP (ex TiLP) et Emu-TIGCC (ex TiEmu) Participez à la reprise de Ti-Gen! |
Et t'en es fier? Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique. |
Petit profile:
Je crois que ce qu'il faut optimiser est évident
Cinq font un et un font cinq : le tout est UNITE C'est dans l'incompréhension que je suscite que je trouve ma raison d'être. Je suis moi , et je le suis parce que les autres ne le sont pas, et que ce sont eux qui forment ma personne. Inconscience et déraison sont source d'imagination. Au delà de ma conscience et de mon inconscient, mes rêves créent la réalité. |
Bah, le code, il est là: http://tigcc-linux.cvs.sourceforge.net/tigcc-linux/tigcc/ld-tigcc/manip.c?revision=1.10&view=markup Challenge: trouvez les fonctions FindRelocAtPos et FindSymbolAtPos. Indice: une recherche ne les trouve pas, et pourtant le code est là-dedans. Autre indice: j'ai déjà plusieurs fois montré le code en question comme exemple sur ce forum. Je vous laisse chercher. Mainteneur de TIGCC (le vrai) (Co-)Administrateur du Forum TICT et TIGCC (anglophone) Modérateur sur MobiFiles (germanophone) Fondateur de #tigcc sur irc.freequest.net (UTF-8) CalcForge – le nouvel hébergement de CalcForgeLP (ex TiLP) et Emu-TIGCC (ex TiEmu) Participez à la reprise de Ti-Gen! |
? edit : ça me rend malade tout ça, pas envie d'en lire plus La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork. |
Je savais très bien que la seule structure de données de ld-tigcc était la liste chaînée, mais je voulais savoir à quel point c'était un carnage. Maintenant, avec les chiffres de ./111, je sais Vu que 90% du temps est passé dans les fonctions de liste chaînée, une accélération de 5x ne semble pas irréaliste ^^ Un arbre binaire ordonné qui reste assez équilibré sans être trop coûteux (red-black, par exemple) améliorerait déjà les choses, mais sur des grands volumes de données, ils ne peuvent pas rivaliser avec une hashtable... |
beaucoup plus que 5x, c'est plus la même complexité de toutes façons. Nan mais qu'est ce qu'il y a de compliqué à utiliser une hashmap sans déconner ??? (même à faire c'est pas du tout compliqué, j'en ai fait une dans mon premier programme C, un éditeur/optimiseur de tiles, et pourtant je n'y connaissais vraiment rien ) Après, que le programme ne soit pas lisible c'est autre chose, mais au niveau algo y'a vraiment rien de compliqué quand même, je ne comprend pas (au pire, si y'a des effets de bords partout, il suffit de convertir la liste en hashmap juste pour les fonctions qui posent problème, non ?) Cinq font un et un font cinq : le tout est UNITE C'est dans l'incompréhension que je suscite que je trouve ma raison d'être. Je suis moi , et je le suis parce que les autres ne le sont pas, et que ce sont eux qui forment ma personne. Inconscience et déraison sont source d'imagination. Au delà de ma conscience et de mon inconscient, mes rêves créent la réalité. |
Je donnais 5x comme borne inférieure (= si on n'arrive pas à accélérer le linker d'au moins cette quantité, c'est qu'on ne s'applique pas) C'est clair qu'avec une hash table de taille bien choisie (=> taux de remplissage pas trop élevé; si on sait dès le début combien de sections il y a, on pourrait même peut-être adapter la taille de la table et la fonction de hash au nombre de sections), on peut faire mieux que ça. |
Ximoon (./113) Voilà notre gagnant! Dommage que tu ne gagnes rien. Lionel Debroux (./114) : Les fonctions qui consomment le plus de temps dans le profile de PpHd sont des fonctions qui recherchent des symboles par position, pas par nom, donc l'idée de l'arbre équilibré m'a l'air meilleure. Mainteneur de TIGCC (le vrai) (Co-)Administrateur du Forum TICT et TIGCC (anglophone) Modérateur sur MobiFiles (germanophone) Fondateur de #tigcc sur irc.freequest.net (UTF-8) CalcForge – le nouvel hébergement de CalcForgeLP (ex TiLP) et Emu-TIGCC (ex TiEmu) Participez à la reprise de Ti-Gen! |
Kevin Kofler (./117) : A mon avis aussi. Cinq font un et un font cinq : le tout est UNITE C'est dans l'incompréhension que je suscite que je trouve ma raison d'être. Je suis moi , et je le suis parce que les autres ne le sont pas, et que ce sont eux qui forment ma personne. Inconscience et déraison sont source d'imagination. Au delà de ma conscience et de mon inconscient, mes rêves créent la réalité. |
Quelqu'un s'est amusé à implémenter l'utilisation d'arbres équilibrés à la place de l'utilisation de listes chaînées ? Je suis en train de faire un miroir Git du repository CVS TIGCC, pour essayer l'import depuis CVS et pour pouvoir bosser avec un vrai SCM quand je reprendrai et finirai les patches pour le support du timestamp de compilation... C'est affreusement lent, au mieux une révision d'un fichier donné par seconde Ce n'est pas ma connexion Internet qui limite: j'ai encore fait du téléchargement d'ISO de distros ce matin, en parallèle sur 8 serveurs européens, à plus de 9000 kilo-octets/s pendant des périodes de plusieurs secondes (interrompues parce que mon disque n'est pas capable d'avaler ça)... [EDIT: yeah, presque deux heures d'import pour 479 révisions... A la fin, le pack Git comprend 7720 objets et le répertoire .git, quand le pack est généré avec des settings un peu agressifs, consomme moins de 5 MB.] [EDIT2: j'ai importé également les modules "tigcc-linux" et "ktigcc". J'ai vu que mon import a rendu le repository nettement plus populaire: le nombre de lectures indiqué à http://sourceforge.net/projects/tigcc-linux/ est passé de moins de 500 à plus de 8500 (et le nombre indiqué de commits est super faux, il y a plus de 750 commits rien que pour le module ktigcc)] |