begin process at 2012 02 11 05:10:48
  Trouver un code source :
 
dans
 

789 commentaire(s) de cirec sur des sources sur tout CodeS-SourceS

Déposé sur Raytracing en delphi (progressive path tracing)

j'attendais la mise à jour pour me manifester
de toute façon ces discutions me dépassent ... j'étais pour ainsi-dire << Lost in Comments >> ^^
comme l'a d'ailleurs fait remarquer John Dogget, je ne dois pas être le seul dans cette situation.

Sinon que dire ...
oui c'est vachement plus rapide qu'avant et c'était déjà un sacré boulot mais là c'est encore mieux !! Bravo

Quand on pense où notre jeune ami en était il y a tout juste deux ans encore ... Tu as fait énormément de progrès en peu de temps et maintenant tu en imposes déjà dans plusieurs secteurs de programmation. si si je le pense.

Pour tout ça et le reste ...
Bravo, Félicitations et Merci de le partager avec nous ;)

Note :10/10

Il y a juste une petite chose qui me chagrine ... :
[Mode Recherche la petite bête]

je peux pas m'empêcher de dire que dans l'évènement OnTimer il n'est pas utile de mettre 10/Sec. à jour boutons et icônes:

SettingsBtn.Enabled := not Running;
PlayPauseBtn.Enabled := Running;
StopBtn.Enabled := Running;
SaveBtn.Enabled := Running;
if not Running then PlayPauseBtn.ImageIndex := 2 else
  if Tracer.Suspended then PlayPauseBtn.ImageIndex := 2 else PlayPauseBtn.ImageIndex := 3;

[/Mode Recherche la petite bête]
@++
Posté le : 09/01/2012 22:19:36

Déposé sur Cryptage et decryptage

Problème résolu
le "+" de "Login + CryptageDecryptage" posait un problème
Posté le : 07/01/2012 20:11:48

Déposé sur Raytracing en delphi (progressive path tracing)

Salut et bonne et heureuse année à toutes et à tous,

je rejoins John Dogget sur le fait que ce soit un gouffre à ressources ...
bien que tu aies prévenu de la lenteur du procédé je ne suis pas d'accord avec ça.

Même sur mon vieux P4 3.2Ghz HT ça devrait tourner beaucoup plus vite que ça ... il devrait être capable de faire des milliers de passes par seconde (surtout en 32x32) ... ce qui est loin d'être le cas !!!

Quand on travaille avec des images il faut faire très attention ... la moindre décision peut doubler le temps d'exécution. Par Ex. vouloir rendre le code lisible en le séparant en procédures, fonctions et unités ... peut avoir un effet dévastateur.
(voir les discutions à ce sujet sur la source de Caribensila:
http://www.delphifr.com/code.aspx?ID=52162#comm387377  )

L'évènement OnTimer réglé à 17ms ... avec le code qu'il contient, est extrêmement couteux

Transformer les objets en Pointeurs et inversement me semble également inutile.
Les instances d'objets sont déjà des pointeurs (en quelque sorte)

un petit exemple sans prétention pour le prouver:
// 2 TImage
// 1 TButton
//
// but:
// passer un objet directement par son adresse
// copier Image1.Picture.Bitmap dans Image2.Picture.Bitmap par l'adresse de "MaClass"

// ps :Image1.Picture.Bitmap doit contenir un Bitmap

  TMaClass = class
   private
     FBitmap: TBitmap;
   public
     property Bitmap: TBitmap read FBitmap write FBitmap;
  end;

var
  Form11: TForm11;
  MaClass: TMaClass;
implementation

{$R *.dfm}

procedure TestObject(const Obj: Integer);
begin
  Form11.Image2.Picture.Bitmap := TMaClass(Obj).Bitmap;
end;


procedure TForm11.FormCreate(Sender: TObject);
begin
  MaClass := TMaClass.Create;
end;

procedure TForm11.Button1Click(Sender: TObject);
begin
  MaClass.Bitmap := Image1.Picture.Bitmap;
  TestObject(Integer(MaClass));
end;

procedure TForm11.FormDestroy(Sender: TObject);
begin
  MaClass.Free;
end;

end.

et voilà ... on obtient le même résultat
le fait de faire:
PTMaClass = ^TMaClass;

Met une adresse dans pointeur ce qui n'apporte rien de plus si ce n'est des "transtypages" inutiles.

J'ai pas mis de commentaires dans le code ... mais il est simple à comprendre.

Sinon,
T'as fait un put.. sacré travail
pas de fuites
pas de crashs
Bravo

Conclusion, je pense sincèrement qu'on peut encore augmenter la vitesse d'exécution.
rien qu'en se passant de l'affichage du résultat en direct, les temps devraient être divisés par deux (pour un même résultat)
Posté le : 03/01/2012 12:57:56

Déposé sur Deux bibliothèques pour calculer avec des entiers très grands

@Pseudo3:

tiens voici l'adresse de DelForExp l'un des "formateurs" de codes les plus utilisé ... de D2 à D2007
http://www.aew.wur.nl/UK/Delforexp/

il existe une version qui s'intègre à l'IDE et une Standalone.
Posté le : 16/12/2011 15:43:09

Déposé sur Comment dessiner sur un tcanvas le texte d'une formule chimiq...

@Pseudo3:

"
1) "Pourquoi avoir mis EXIT au début de FormPaint ? "
... Bigre, je n'ai pas trouvé d'EXIT dans FormPaint ???
"

tu vois ... avec une indentation plus "standard" tu aurais vu l'instruction "Exit;" du premier coup d'oeil.

procedure TForm1.FormPaint(Sender: TObject);
var i,x,y : integer;
R,G,B,dr,dg,db : byte; //<- pour tracé avec ombre (pendant qu'on y est)
begin EXIT;
...
end;

Posté le : 16/12/2011 15:38:04

Déposé sur Texte sur courbe de bezier

@Caribensila:
« - T'es le Davy Crockett de Delphifr, et c'est pour ça que je t'appelle "chef" !  ;)»

j'irai pas jusque là ... mais merci ^^
à partir de Delphi2006 (TurboDelphi) tout le monde peut en faire autant.
pour ce faire il suffit d'ajouter une ligne dans le *dpr ...
begin
  ReportMemoryLeaksOnShutdown := True;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

et quand on quitte l'application si de la mémoire alloué par le programme n'est pas libéré une message box s'affiche indiquant quels objets ou autres pointeurs ... ensuite y a plus qu'à chercher les Create/Free  GetMem/FreeMem  et de vérifier les quels manquent.

Sinon une petite précision pour Pseudo3:

il faut bien faire la différence entre assignation et égalité.
Ex.
BMP1, BMP2 : TBitmap;

Bmp1.Assign(Bmp2);
  est différent de
Bmp1 := Bmp2;

dans le premier cas Bmp1 copie toutes les valeurs de Bmp2 (il en fait un clone) mais ce sont deux objets bien distincts (Bmp1 et Bmp2 pointent sur adresses mémoire différentes)
modifier Bmp1 n'affecte pas Bmp2

alors qu'avec
Bmp1 := Bmp2;
Bmp1 devient Bmp2 (ils pointent sur la même adresse mémoire)
modifier Bmp1 revient à modifier Bmp2
en faisant Bmp1.Free; ce sont les deux qui sont touchés
et si on avait pas libéré Bmp1 avant ... on a une fuite de mémoire.


Posté le : 10/12/2011 19:49:18

Déposé sur Texte sur courbe de bezier

Voilà ...
comme t'as fais du bon travail en appliquant les modifications ...
j'ai traqué les dernières fuites !!!

dans l'unité uManipBMP2.pas:
on peut supprimer le code du destructeur puisqu'on on a plus d'objet à détruire ...

type
  TTexteSurBezier = class(TObject)
   ...
    constructor Create(inbPointsC: integer); // Pré-calcul coeffs Bézier
    // *** la surcharge du contructeur est devenue inutile depuis
    // qu'on a plus d'objet à détruire (Fonte)
    {destructor Destroy; override;}
   ...

// *** supprimé depuis qu'on a plus à détruire l'objet Fonte
{destructor TTexteSurBezier.Destroy;
begin
  //if Assigned(Fonte) then Fonte.Free;
  inherited Destroy;
end;}


explication:
il restait une fuite sur TFont et celle-ci se trouvait dans la procédure TTexteSurBezier.Add
begin
  ...
  // *** supprimé car inutile et source de fuite de mémoire
  //Fonte:=tFont.Create;
  //Fonte.Assign(iFonte);
  // *** remplacé par:
  Fonte := iFonte;
  ...
end;


Dans l'unité uTexteSurBezier.pas
c'est la procédure FormCloseQuery qui est modifié.
elle causait une double fuite
la première sur BMPUndo qui n'était pas libéré
et une double sut BMPUndo & TexteSurBezier si on essayait de fermer avec VentActif à True:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if VentActif then
  begin
    showmessage('Stopper le "vent" avant de quitter, sinon V.A.');
    CanClose := False; // *** < empeche la fermeture
  end
  // *** ajouté pour éviter une fuite si on essayait de fermer avec Vent Actif
  else
  begin
    CanClose := True;
    TexteSurBezier.Free;
    BmpUndo.Free;  // *** Manquait
  end;
end;


et un petit + pour que l'animation de vent soit une peu plus fluide:
      repeat
        for i := 0 to 14 do
        begin
          image1.Picture.Bitmap.assign(BD[i]);
          if (not bVent.Down) then
            goto Stop;
          Application.ProcessMessages;
        end;
       // *** ajouté pour un effet aller - retour plus naturel
        for i := 14 downto 0 do
        begin
          image1.Picture.Bitmap.assign(BD[i]);
          if (not bVent.Down) then
            goto Stop;
          Application.ProcessMessages;
        end;
      until (not bVent.Down);


c'est pas grand chose mais ça fait un peu moins cyclique.

il ne manque plus qu'une indentation plus standard ...
parce que là franchement c'est hard de te lire et il y a quand même plusieurs chose qu'il faudrait changer/améliorer ... à mon avis
en dehors de la vitesse et donc de l'affichage ... la gestion des poignées ainsi que le déplacement du texte devraient être intégrées à TTexteSurBezier.

ça n'en reste pas moins du bon travail. Bravo


Posté le : 10/12/2011 18:22:28

Déposé sur Texte sur courbe de bezier

Dans FireFox:
Menu Outils -> Options -> avancé -> Onglet Réseau et cliquer sur vider le cache.

c'était pas utile de re déposer l'image à partir du moment ou je t'annonce que je vois ta nouvelle capture on pouvait en déduire que le problème ne vient plus du serveur mais de ton PC

pour le reste j'ai pas encore regardé le nouveau code.
Posté le : 10/12/2011 16:38:37

Déposé sur Texte sur courbe de bezier

...
bis
bon alors je ne sais comment le dire mais il va falloir faire quelque chose pour ces fuites ... pour l'instant au lieu de diminuer elles augmentent (voir rapport ci-joint)
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:

21 - 28 bytes: TBrush x 1
29 - 36 bytes: TPen x 1, Unknown x 2
37 - 44 bytes: TFont x 1
61 - 68 bytes: TBitmap x 2
101 - 108 bytes: TBitmapCanvas x 1
117 - 124 bytes: TBitmapImage x 2
149 - 156 bytes: Unknown x 1

---------------------------
OK  
---------------------------

ps cette fuite est causé uniquement par un seul texte et l'exécution du "Vent"

avec un simple texte sans rien d'autre il reste:
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:

61 - 68 bytes: TBitmap x 1
117 - 124 bytes: TBitmapImage x 1

---------------------------
OK  
---------------------------
Posté le : 09/12/2011 18:06:56

Déposé sur Texte sur courbe de bezier

...
La dernière version avec effet vent tourne à 47% de charge CPU chez moi ...
avec les valeurs par défaut de l'interface
Posté le : 09/12/2011 17:56:41



Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales