#526 Le 22/04/2010, à 23:11
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
L'optimisation ici n'est pas faite au niveau de l'assembleur, mais bien de l'écriture. si on affiche caractères par caractères, on fait plusieurs appels à write. Si on écrit un buffer d'un coup, on fait appel une seule fois à write.
Je trouvais ça inutile les 128 caractères, mais puisque vous les demandez :
#include <stdlib.h>
#include <stdio.h>
#include "my.h"
int main(void)
{
char buff[BUFSIZ];
int ctr;
ctr = -1;
while (++ctr < BUFSIZ)
{
if (ctr < 128)
buff[ctr] = ctr;
else
buff[ctr] = '\0';
}
my_putstr(buff);
return (EXIT_SUCCESS);
}
Qu'y a-t-il d'obscur dans ce code, par rapport à un code en brainfuck ?
edit : pylade, je comprends pas ta question O_o .
Dernière modification par gnuuat (Le 22/04/2010, à 23:11)
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#527 Le 22/04/2010, à 23:15
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
L'optimisation ici n'est pas faite au niveau de l'assembleur, mais bien de l'écriture. si on affiche caractères par caractères, on fait plusieurs appels à write. Si on écrit un buffer d'un coup, on fait appel une seule fois à write.
Et qui te dit que le compilo ne vas pas remplacer les multiples appels à write par un seul ?
Ça me paraît largement envisageable dans un cas simple comme celui-ci.
Hors ligne
#528 Le 22/04/2010, à 23:18
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Si je suis aussi sûr de moi, c'est parce qu'on l'a testé de nombreuses fois ^^' .
Donc à moins de mettre des flags d'optimisations spécifiques (il doit y en avoir, mais pas sûr), ça ne se fait pas tout seul.
Et puis pour être sûr de ce que fait ton code au final, autant le coder tout de suite plutôt que d'attendre que le compilo le fasse à ta place. Lui, il est là pour remplacer les strlen static, car ça, tu ne peux pas forcement les prévoirs .
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#529 Le 22/04/2010, à 23:27
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Oui je viens de vérif, effectivement dans ce cas là gcc ne le fais pas (j'ai pas le compilo Intel sous là main pour tester) .
Lui, il est là pour remplacer les strlen static, car ça, tu ne peux pas forcement les prévoirs .
Soit c'est une blague, soit tu ignores tout des capacités d'optimisation d'un compilateur (c'est très loin de se limiter à ça).
Hors ligne
#530 Le 22/04/2010, à 23:32
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Oui je viens de vérif, effectivement dans ce cas là gcc ne le fais pas (j'ai pas le compilo Intel sous là main pour tester) .
gnuuat a écrit :Lui, il est là pour remplacer les strlen static, car ça, tu ne peux pas forcement les prévoirs .
Soit c'est une blague, soit tu ignores tout des capacités d'optimisation d'un compilateur (c'est très loin de se limiter à ça).
J'exagère très largement. Ne t'inquiètes pas, je ne suis pas inconscient du rôle du compilateur, je sais très bien qu'il ne fait pas que "transformer du code en binaire", et j'ai pas mal touché les flags d'optimisations pour certains projets (et aussi sous Gentoo) pour savoir que gcc ne fait pas que remplacer du strlen.
Je te titille c'est tout .
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#531 Le 22/04/2010, à 23:36
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
C'est bien ce que je pensais, mais merci de le confirmer comme ça il n'y a pas de doutes
Hors ligne
#532 Le 22/04/2010, à 23:38
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Pour calmer le jeu : un blog sans authentification en 5 minutes avec CakePHP :
Deux tables :
* users { id, name}
* tickets { id, title, message, user_id}
Controller User :
Model Ticket
<?php
class UsersController extends AppController {
var $name = 'Users';
var $scaffold;
}
Controller Ticket :
Model Ticket
<?php
class TicketsController extends AppController {
var $name = 'Tickets';
var $scaffold;
}
Model Ticket
<?php
class Ticket extends AppModel {
var $name = 'Ticket';
var $belongsTo = 'User';
}
Model User
<?php
class User extends AppModel {
var $name = 'User';
var $hasMany = 'Ticket';
}
Et voilà, vous avez un CRUD 100% giga complet sur les tickets et utilisateurs, avec tout ce qu'il faut (des liens automatiques, des formulaires tout fait).
Un framework MVC à manger : CakePHP !
edit : bon, après, si on veut un vrai site, faut coder un peu plus, mais c'est vraiment chouette .
Dernière modification par gnuuat (Le 22/04/2010, à 23:41)
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#533 Le 22/04/2010, à 23:52
- grim7reaper
Hors ligne
#534 Le 23/04/2010, à 00:15
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Au fait, ça représente quoi ton avatar ?
(Tiens, ça me fait penser qu’il faudrait que je m’en trouve un moins pourri).
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#535 Le 23/04/2010, à 00:21
- grim7reaper
Hors ligne
#536 Le 23/04/2010, à 00:35
- nesthib
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
The cake is a lie.
follow the white rabbit…
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#537 Le 23/04/2010, à 00:40
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Hum, ce n'est plus la même référence là .
Tu as encore un nouvel avatar, pour le long terme celui-ci ?
Hors ligne
#538 Le 23/04/2010, à 00:50
- nesthib
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Hum, ce n'est plus la même référence là .
oui je sais mais je trouvais que ça allait bien à la suite
Tu as encore un nouvel avatar, pour le long terme celui-ci ?
peut-être jusqu'à notre install-party (ou pas)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#539 Le 23/04/2010, à 01:02
- Grünt
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Plop.
Red flashing lights. I bet they mean something.
Hors ligne
#540 Le 23/04/2010, à 01:03
- nesthib
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
alors ǤƦƯƝƬ on ploppe ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#541 Le 23/04/2010, à 01:09
- Кຼزດ
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
alors ǤƦƯƝƬ on ploppe ?
Non, on proteste
dou
Hors ligne
#542 Le 23/04/2010, à 01:13
- nesthib
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#543 Le 23/04/2010, à 03:08
- grim7reaper
Hors ligne
#544 Le 23/04/2010, à 03:24
- samυncle
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Plop
Hello world
Hors ligne
#545 Le 23/04/2010, à 07:24
- gnuuat
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
int my_strlen(char *str)
{
int len;
len = -1;
if (str != NULL)
while (str[++len] != '\0');
return (len);
}
++
;; my_strlen
;; Exported and imported symbols.
global my_strlen
section .text
my_strlen:
;;Prolog.
push ebp
mov ebp, esp
;; Retreive arguments.
mov edx, ebp
add edx, 8
;; Counter initilization.
xor ecx, ecx
.len:
cmp byte [edx], 0
je .end
inc edx
inc ecx
jmp .len
.end:
mov eax, ecx
;; Epilog.
leave
ret
section .data
section .bss
Dernière modification par gnuuat (Le 23/04/2010, à 08:12)
Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !
Hors ligne
#546 Le 23/04/2010, à 08:58
- helly
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
tain mon classement !!
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#547 Le 23/04/2010, à 09:54
- \\Ouranos//
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
helly is back ! \o/
Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.
Hors ligne
#548 Le 23/04/2010, à 10:02
- Pylades
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
tain mon classement !!
Le mien ?
Oui.
Dernière modification par Pylade (Le 23/04/2010, à 10:03)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#549 Le 23/04/2010, à 10:04
- grim7reaper
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
tain mon classement !!
Bon retour parmis les couches-tard !
Héhé, c'est ça d'être absente, moi j'ai bien progressé ces 2 derniers jours .
Enfin, c'est pas comme le tcdt, ici on peut facilement rattraper les premiers.
@gnuuat : ton strlen, c'est l'implémentation basique, avec comparaison de chaque caractère ?
Si tu veux remplacer le strlen standard c'est ton choix, mais alors remplace-le par quelque chose de plus efficace (là c'est beaucoup moins optimisé que la fonction standard qui elle teste par paquet de 4 bytes).
size_t strlen (str) const char *str;
{
const char *char_ptr;
const unsigned long int *longword_ptr;
unsigned long int longword, himagic, lomagic;
for (char_ptr = str; ((unsigned long int) char_ptr & (sizeof (longword) - 1)) != 0; ++char_ptr)
if (*char_ptr == '\0')
return char_ptr - str;
longword_ptr = (unsigned long int *) char_ptr;
himagic = 0x80808080L;
lomagic = 0x01010101L;
if (sizeof (longword) > 4)
{
himagic = ((himagic << 16) << 16) | himagic;
lomagic = ((lomagic << 16) << 16) | lomagic;
}
if (sizeof (longword) > 8)
abort ();
for (;;)
{
longword = *longword_ptr++;
if (((longword - lomagic) & ~longword & himagic) != 0)
{
const char *cp = (const char *) (longword_ptr - 1);
if (cp[0] == 0)
return cp - str;
if (cp[1] == 0)
return cp - str + 1;
if (cp[2] == 0)
return cp - str + 2;
if (cp[3] == 0)
return cp - str + 3;
if (sizeof (longword) > 4)
{
if (cp[4] == 0)
return cp - str + 4;
if (cp[5] == 0)
return cp - str + 5;
if (cp[6] == 0)
return cp - str + 6;
if (cp[7] == 0)
return cp - str + 7;
}
}
}
}
libc_hidden_builtin_def (strlen)
@Pylade : mon avatar est tout bêtement un dessin de la Grim Reaper (nom anglais de la Grande Faucheuse). Je l'avais trouvé il y à quelques années lorsque je me cherchais un avatar en rapport avec mon pseudo (qui n'était pas grim7reaper à l'époque, mais appartenait au même champ lexical), j'ai alors tapé "grim reaper" dans Google image (quelle époque ! Maintenant je n'utilise plus Google, ou alors très rarement) et je l'ai vu. J'avais bien aimé les ailes, c'est un truc que l'on voit rarement sur la Mort et puis j'ai vraiment aimé ce qui se dégageais de ce dessin donc je l'ai pris.
D'ailleurs ça fait un moment que je me dis qu'il faudrait que je change d'avatar, pour avoir un truc vraiment à moi (ou au moins sous Creative Common) et je vais probablement le faire bientôt (quand j'aurais trouvé un digne remplaçant).
Dernière modification par grim7reaper (Le 23/04/2010, à 10:13)
Hors ligne
#550 Le 23/04/2010, à 10:58
- helly
Re : ..:: Topic des Codeurs Couche-Tard [0] ::..
Tiens au fait j'ai suivi votre conseil et je me suis fait(e?) acheter le pavé (900pages ) de stroustrup
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne