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
# Voir aussi: photorec
Posté par lolop (site web personnel) . En réponse au message Récupérer des données malencontreusement effacées. Évalué à 10.
Dédié à la récup des fichiers effacés, ou sur support défectueux.
http://www.cgsecurity.org/wiki/PhotoRec_FR
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Ce qu'il faut faire
Posté par lolop (site web personnel) . En réponse au journal Canonical embrasse la technologie Microsoft (bootloader). Évalué à 5.
Tu rigoles ?
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Solution dans le cloud ?
Posté par lolop (site web personnel) . En réponse au message Stockage en ligne - quelles solutions. Évalué à 2.
Itou. Ça ajoute aussi une sécurité vs défaillance du disque de backup.
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.
Pour le O1 y'a dû avoir un évènement pendant l'exécution (manque de stats - temps d'exec trop court, ça reste des nano secondes)
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