Modifié en ajoutant une globale uint8_t coucou[10000000];
Et en stockant les résultats coucou[i] = mafonction1(i % UCHAR_MAX)*2; pour que le résultat soit utilisé donc que la boucle ne soit pas réduite par l'optimiseur.
… le code inline a donc l'avantage que le compilo cast le paramètre en uint8_t, ce que ne fait pas la macro, ce qui permettrais de supprimer le test (faudrais voir, coût du test vs coût du cast sans le test, avec un peu de chance le inline devient plus rapide).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
J'aime bien le inline avec le contrôle de type par le compilo & Co - je trouve ça plus propre que la définition de macros. Je me suis demandé quel coût avait le inline vs la définition de macro.
Testé avec le source suivant (sous Linux 64 bits, gcc 4.6.3).
// Fichier testinlinec.c#include <stdio.h>#include <stdint.h>#include <time.h>#include <limits.h>#define TESTSCOUNT 10000000staticuint8_tmapping[256];// Définition avec du inline.staticinlineuint8_tmafonction1(uint8_tv){returnv>UCHAR_MAX?0:mapping[v];}// Définition en macro.#define mafonction2(X) (X > UCHAR_MAX ? 0 : mapping[X])inlineuint64_trdtsc(){uint32_tlo,hi;__asm____volatile__("xorl %%eax, %%eax\n""cpuid\n""rdtsc\n":"=a"(lo),"=d"(hi)::"%ebx","%ecx");return(uint64_t)hi<<32|lo;}voidmain(void){inti;intx;uint64_tstart,end;uint64_ttinline,tmacro;// Initialisation du mapping avec des valeurs décalées.for(i=0;i<256;i++)mapping[i]=(i+8)%UCHAR_MAX;// Test avec le inline.start=rdtsc();for(i=0;i<TESTSCOUNT;i++)x=mafonction1(i%UCHAR_MAX)*2;end=rdtsc;tinline=end-start;printf("Inline: %lu\n",tinline);// Test avec la macro.start=rdtsc();for(i=0;i<TESTSCOUNT;i++)x=mafonction2(i%UCHAR_MAX)*2;end=rdtsc;tmacro=end-start;printf("Macro: %lu\n",tmacro);printf("Inline-Macro: %lu\n",tinline-tmacro);}
Le résultat dépend fortement de l'option de compilation choisie (je suppute que dans certains cas il n'inline pas). Sur ma machine (note: le temps est en nano-secondes):
Tu fais le calcul une fois pour toutes pour les 256 valeurs au démarrage et stocke ça dans une globale, après c'est de l'accès direct en mémoire à l'index désiré. Si c'est beaucoup utilisé, ça va se retrouver dans le cache avec un accès très rapide, sinon… c'est que ça ne le mérite pas :-)
Et éventuellement, tu peux définir: static inline uint8_t mafonction(uint8_t v)
{ return maglobale[v]; }
Comme ça c'est masqué et si tu changes l'implémentation de mafonction(), ton code restera le même.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Pas d'expérience là dessus (j'ai juste un Galaxy Note, qui me sert aussi en… téléphone, annuaire, dépannage photos, keepassdroid, etc - ça éclate x 5 ton budget juste pour l'appareil, à toi de voir si ça vaut le coup/coût pour ton usage).
Eventuellement du côté des Archos:
Par exemple ARCHOS 80 G9 à 230€… + stick à 50€ + abonnement/prépayé si tu veux pouvoir le connecter en 3G (pas sûr que tu ais du WiFi partout)
Comme c'est du Androïd, si (à vérifier) tu as accès l'Androïd market, il y a les applications pour client ssh, vim & Co.
Mais c'est pas léger… quid de la qualité de saisie en terminal ?
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
J'ai en plus un (tout) petit clavier bluetooth qui dépanne pas mal, avec ssh & consor ça tourne bien, sauf deux trucs: le "ESC" qui est récupéré par Android et fait sortir de l'application, les touches de contrôle.
Mais, là c'est loin de 100€, sur le site de la fnac c'est de 480€ à 580€, y'aura peut-être moins chez ailleurs, mais pas à 100€ (ou alors il est en carton, ou encore "tombé du camion").
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Ben, tu passe en Sphinx (reStructuredText) et tu as les outils qui te génèrent ta doc "belle comme la doc Python" (normalement tu peux personnaliser les styles, voir même ajouter des éléments spécifiques).
Le problème est: de quoi tu parts ? Du neuf, de l'ancien ? Sous quel format ?
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Le rédacteurs du "Magazine en ligne des professionnels de l'informatique" devraient se relire avant de publier.
Nos investissements dans le R&D ont augmenter considérablement et vous encore s'accroître d'ici quelques mois. Nous sommes certainement le plus gros investisseur privé français en R&D Open Source !
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Mon syndicat utilise un logiciel maison pour la gestion de ses adhérents.
Ça pourrait valoir le coup de regarder du côté des softs de gestion d'association, y'a justement un post sur Garradin (et de mémoire il y a eu des posts sur d'autres softs de gestion d'adhérents, faut rechercher).
Ton problème deviendrait alors: comment exporter les données et les réimporter dans le nouveau système.
Tu gagnerais de pouvoir utiliser ça avec n'importe quel butineur web… et être indépendant de Microsoft ou Linux ou MacOS.
Contrepartie: avoir une machine pour l'hébergement.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Ça serait vachement pratique quand on apprend une langue étrangère basée sur les caractères latins, pour rechercher dans des dictionnaires¹ ayant des ordres différents dans les caractères.
¹ Oui, je sais, (maintenant) y'a les traducteurs en ligne et les moteurs de recherche.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Si c'est juste pour échapper les caractères (entre autre &), tu peux utiliser cgi.escape()sur le contenu à échapper (donc pas sur toute la page d'un coup, mais sur les parties contenu et attributs HTML).
Sinon, pour tous les caractères accentués, symboles, marques… si tu indiques utf8, tu dois pouvoir les générer directement à ce format dans ton document sans avoir à te taper des & eacute ; (sinon à quoi ça sert d'encoder en utf8?).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Mon premier Minitel avait la particularité d'avoir un clavier où les touches étaient rangées en ordre alphabétique et non pas azerty ! Ça en dit long sur l'estime que nous portaient nos technocrates de l'époque…
Lapin compris la relation.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Bon, alors un peu de désespoir en plus… j'ai aussi un montage NFS entre deux machines, qui se fait en V4 (pas réussi à forcer le V3 malgré toutes les options), avec du LDAP et des ACLs…. et pas trouvé de réponse à mon problème (on doit le voir dans les archives linuxfr) - qui fait que les données sont inaccessibles par les utilisateurs (sauf à tourner root…).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Je crois qu'il n'y a pas (trop) de problème pour la mise en place initiale d'un tel système s'il n'y a que les étapes que tu indiques (avec bien sûr des trucs en plus après - comptes utilisateurs & Co - mais liés intrinsèquement au logiciel).
Ce que j'ai pu voir, c'est que lorsqu'il y a un problème / crash / bug, la réparation aussi doit pouvoir se faire simplement, AMA en deux étapes:
réinstallation du logiciel (éventuellement sur une autre machine) - la procédure que tu décrits est ok
remise en place des données (là, c'est bien que le soft prévoit de lui-même de faire - ou au moins proposer - des sauvegardes régulières "ailleurs" que sur le disque local)
Si tu as ces deux étapes, alors tu es prêt pour l'utilisation en écoles.
D'ailleurs, une mise à jour peut se faire de la même façon: réinstallation + remise en place des données. Bon, voir aussi la gestion des versions si les structures de données évoluent entre les versions… conversion automatique et/ou très aidée fortement conseillés.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
C'est beau la théorie. En pratique plus ton système est compliqué, plus tu as de problèmes (même avec un bel installeur). Et dans une structure comme une école maternelle/primaire, un problème informatique c'est un truc qui fait que tu laisses tomber le logiciel et que tu passes à un autre, parce que ça n'est pas ton métier, tu n'as pas les compétences, et tu as mille autres choses à faire au moins sinon plus importantes.
Faut que ça marche simplement (Kiss), et du apache+cgi+bdd+frontend c'est une multiplication inutile des risques, c'est de l'informatique qui a besoin d'informaticiens.
Les gens qui jouent à installer ce genre de trucs sur des NAS, des raspberry pi ou autre, ne sont pas la cible des logiciels tel que ce que recherche Antony.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Une table
Posté par lolop (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 2.
Ben non (j'aurais dû lire Batchyx jusqu'au bout).
Modifié en ajoutant une globale
uint8_t coucou[10000000];
Et en stockant les résultats
coucou[i] = mafonction1(i % UCHAR_MAX)*2;
pour que le résultat soit utilisé donc que la boucle ne soit pas réduite par l'optimiseur.Dont acte.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Une table
Posté par lolop (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 2.
En corrigeant mon bug (⇒
end = rdtsc();
), c'est nettement mieux:L'inlining est similaire à la macro.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Une table
Posté par lolop (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 2.
Ah, en effet, gros bug (faudrais pas coder trop tard le soir):
Et je ne me souviens pas avoir vu d'erreur par gcc. Je reverrais ça ce soir…
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Une table
Posté par lolop (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 3.
… le code inline a donc l'avantage que le compilo cast le paramètre en uint8_t, ce que ne fait pas la macro, ce qui permettrais de supprimer le test (faudrais voir, coût du test vs coût du cast sans le test, avec un peu de chance le inline devient plus rapide).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Une table
Posté par lolop (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 2.
La ligne
return v>UCHAR_MAX? 0 : mapping[v];
est là pour avoir le même code que dans la macro. Et gcc 4.7 semble avoir des contrôles en plus du 4.6.Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Une table
Posté par lolop (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 3.
Oui, en utilisant CMake + make, sinon je n'aurais pas pu donner les résultats.
Le but était de comparer l'inlining (effectif) vs la macro. Peut-être que toi tu connaissais à l'avance le résultat, moi pas.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Une table
Posté par lolop (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 3.
J'aime bien le inline avec le contrôle de type par le compilo & Co - je trouve ça plus propre que la définition de macros. Je me suis demandé quel coût avait le inline vs la définition de macro.
Testé avec le source suivant (sous Linux 64 bits, gcc 4.6.3).
Le résultat dépend fortement de l'option de compilation choisie (je suppute que dans certains cas il n'inline pas). Sur ma machine (note: le temps est en nano-secondes):
(note: avec des variations d'une exécution sur l'autre… vu la résolution c'est normal, les -O2 et -O3 sont quasi équivalent pour ce test)
Note: code pour le timing issu de stackoverflow.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Une table
Posté par lolop (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 4.
Tu fais le calcul une fois pour toutes pour les 256 valeurs au démarrage et stocke ça dans une globale, après c'est de l'accès direct en mémoire à l'index désiré. Si c'est beaucoup utilisé, ça va se retrouver dans le cache avec un accès très rapide, sinon… c'est que ça ne le mérite pas :-)
Et éventuellement, tu peux définir:
static inline uint8_t mafonction(uint8_t v)
{ return maglobale[v]; }
Comme ça c'est masqué et si tu changes l'implémentation de mafonction(), ton code restera le même.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: AMA ça va être dur (€€€)
Posté par lolop (site web personnel) . En réponse au message Tablette ou autre pour admin sys en cyclo-camping. Évalué à 2.
Pas d'expérience là dessus (j'ai juste un Galaxy Note, qui me sert aussi en… téléphone, annuaire, dépannage photos, keepassdroid, etc - ça éclate x 5 ton budget juste pour l'appareil, à toi de voir si ça vaut le coup/coût pour ton usage).
Eventuellement du côté des Archos:
Par exemple ARCHOS 80 G9 à 230€… + stick à 50€ + abonnement/prépayé si tu veux pouvoir le connecter en 3G (pas sûr que tu ais du WiFi partout)
Comme c'est du Androïd, si (à vérifier) tu as accès l'Androïd market, il y a les applications pour client ssh, vim & Co.
Mais c'est pas léger… quid de la qualité de saisie en terminal ?
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: hybride tel-tablette ?
Posté par lolop (site web personnel) . En réponse au message Tablette ou autre pour admin sys en cyclo-camping. Évalué à 2.
C'est ce que j'ai.
J'ai en plus un (tout) petit clavier bluetooth qui dépanne pas mal, avec ssh & consor ça tourne bien, sauf deux trucs: le "ESC" qui est récupéré par Android et fait sortir de l'application, les touches de contrôle.
Mais, là c'est loin de 100€, sur le site de la fnac c'est de 480€ à 580€, y'aura peut-être moins chez ailleurs, mais pas à 100€ (ou alors il est en carton, ou encore "tombé du camion").
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# AMA ça va être dur (€€€)
Posté par lolop (site web personnel) . En réponse au message Tablette ou autre pour admin sys en cyclo-camping. Évalué à 3.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: linux admin
Posté par lolop (site web personnel) . En réponse au message cherche exemples de documentation avec belle mise en page. Évalué à 3.
Ben, tu passe en Sphinx (reStructuredText) et tu as les outils qui te génèrent ta doc "belle comme la doc Python" (normalement tu peux personnaliser les styles, voir même ajouter des éléments spécifiques).
Le problème est: de quoi tu parts ? Du neuf, de l'ancien ? Sous quel format ?
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Relecture...
Posté par lolop (site web personnel) . En réponse au journal Le Salon Solutions Linux en fort déclin ?. Évalué à 10.
Le rédacteurs du "Magazine en ligne des professionnels de l'informatique" devraient se relire avant de publier.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# (±HS) L'occasion de changer
Posté par lolop (site web personnel) . En réponse au message Est-ce difficile de porter une application .Net sous linux ?. Évalué à 4.
Ça pourrait valoir le coup de regarder du côté des softs de gestion d'association, y'a justement un post sur Garradin (et de mémoire il y a eu des posts sur d'autres softs de gestion d'adhérents, faut rechercher).
Ton problème deviendrait alors: comment exporter les données et les réimporter dans le nouveau système.
Tu gagnerais de pouvoir utiliser ça avec n'importe quel butineur web… et être indépendant de Microsoft ou Linux ou MacOS.
Contrepartie: avoir une machine pour l'hébergement.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Demande de précision ?
Posté par lolop (site web personnel) . En réponse au journal La fin du Minitel. Évalué à 2.
Q? en Suède, ils le mettent où ?
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Demande de précision ?
Posté par lolop (site web personnel) . En réponse au journal La fin du Minitel. Évalué à 7.
Ça serait vachement pratique quand on apprend une langue étrangère basée sur les caractères latins, pour rechercher dans des dictionnaires¹ ayant des ordres différents dans les caractères.
¹ Oui, je sais, (maintenant) y'a les traducteurs en ligne et les moteurs de recherche.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Un complément
Posté par lolop (site web personnel) . En réponse au message problème python apache et utf8 [resolu]. Évalué à 2.
Sur le problème de l'encodage du contenu dans une réponse sur stackoverflow avec Python 3 CGI encoding
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Je suis nul
Posté par lolop (site web personnel) . En réponse au message problème python apache et utf8 [resolu]. Évalué à 2.
Pour convertir QUOI en code HTML ?
Si c'est juste pour échapper les caractères (entre autre &), tu peux utiliser cgi.escape() sur le contenu à échapper (donc pas sur toute la page d'un coup, mais sur les parties contenu et attributs HTML).
Sinon, pour tous les caractères accentués, symboles, marques… si tu indiques utf8, tu dois pouvoir les générer directement à ce format dans ton document sans avoir à te taper des
& eacute ;
(sinon à quoi ça sert d'encoder en utf8?).Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Au cas où
Posté par lolop (site web personnel) . En réponse au message problème python apache et utf8 [resolu]. Évalué à 2.
Je ne suis pas expert du CGI sous Python3, une question:
Qui gère l'encodage de la réponse vers utf8 ?
Sinon, ton erreur semble en effet n'avoir aucun rapport avec l'encodage, mais avec une "simple" interdiction d'exécution.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Demande de précision ?
Posté par lolop (site web personnel) . En réponse au journal La fin du Minitel. Évalué à 9.
Lapin compris la relation.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: What's the point ?
Posté par lolop (site web personnel) . En réponse à la dépêche Garradin : gestionnaire d'association léger, complet et libre. Évalué à 10.
Meu non. Je me garde deux liens sur les joies de PHP.
Pour moi PHP c'est quand je n'ai pas le choix. Mais, à chacun ses plaisirs.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Siouplé !
Posté par lolop (site web personnel) . En réponse au message NFS4 et mauvaise attribution de owner/group. Évalué à 2.
Bon, alors un peu de désespoir en plus… j'ai aussi un montage NFS entre deux machines, qui se fait en V4 (pas réussi à forcer le V3 malgré toutes les options), avec du LDAP et des ACLs…. et pas trouvé de réponse à mon problème (on doit le voir dans les archives linuxfr) - qui fait que les données sont inaccessibles par les utilisateurs (sauf à tourner root…).
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Déjà dépassé
Posté par lolop (site web personnel) . En réponse au journal [HS] Metro, huitpointzéro, placebo. Évalué à 3.
Dans ton image, AOL c'était "kids only"…
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Un autre, qui est suivi
Posté par lolop (site web personnel) . En réponse au journal Problème de suivi d’un logiciel privateur. Évalué à 1.
Je crois qu'il n'y a pas (trop) de problème pour la mise en place initiale d'un tel système s'il n'y a que les étapes que tu indiques (avec bien sûr des trucs en plus après - comptes utilisateurs & Co - mais liés intrinsèquement au logiciel).
Ce que j'ai pu voir, c'est que lorsqu'il y a un problème / crash / bug, la réparation aussi doit pouvoir se faire simplement, AMA en deux étapes:
Si tu as ces deux étapes, alors tu es prêt pour l'utilisation en écoles.
D'ailleurs, une mise à jour peut se faire de la même façon: réinstallation + remise en place des données. Bon, voir aussi la gestion des versions si les structures de données évoluent entre les versions… conversion automatique et/ou très aidée fortement conseillés.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Un autre, qui est suivi
Posté par lolop (site web personnel) . En réponse au journal Problème de suivi d’un logiciel privateur. Évalué à 3.
C'est beau la théorie. En pratique plus ton système est compliqué, plus tu as de problèmes (même avec un bel installeur). Et dans une structure comme une école maternelle/primaire, un problème informatique c'est un truc qui fait que tu laisses tomber le logiciel et que tu passes à un autre, parce que ça n'est pas ton métier, tu n'as pas les compétences, et tu as mille autres choses à faire au moins sinon plus importantes.
Faut que ça marche simplement (Kiss), et du apache+cgi+bdd+frontend c'est une multiplication inutile des risques, c'est de l'informatique qui a besoin d'informaticiens.
Les gens qui jouent à installer ce genre de trucs sur des NAS, des raspberry pi ou autre, ne sont pas la cible des logiciels tel que ce que recherche Antony.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN