Ik werk al sinds jaar en dag in Delphi en omdat ik veel grafische dingetjes maak dacht ik: laat ik C++ Builder eens proberen, dat moet een flinke snelheidswinst opleveren. Ik heb versie 5 geinstalleerd en om 't onder de knie te krijgen bakte ik een functie die een bitmap vol met random gekleurde stipjes op 't form zet, als onIdle functie.
Onder Delphi gaat dit lekker snel (dan praat ik over 50 fps, zo op 't oog, bij wijze van spreken) maar onder BCB haal ik amper 2 fps. Eerst maar even de code:
In Delphi 6:
In C++ Builder 5:
Wat heb ik geprobeerd om het op te lossen? Eerst heb ik de random-functie vervangen door een byte (die steeds groter wordt) om te kijken of de random-functie van BCB misschien gewoon erg traag is. Niet dus. Ik begon te vermoeden dat het aan de debugger lag, maar het uitschakelen van de debug-opties (of simpelweg op de 'release'-knop drukken bij de compiler-opties) hielp ook niets. Toen ben ik aan 't Googlen geslagen met de zoektermen 'borland builder slow debug release', maar dat levert weinig zinvols op; de topics gaan eigenlijk alleen maar over het trage compilen.
Zit ik in de goeie weg te zoeken en zie ik een debug-optie over 't hoofd of moet ik de oorzaak in een hele andere hoek zoeken? Of is dit gewoon de top'snelheid' van BCB?
OS: Windows 2000, Professor: XP1800, maarja, die info is eigenlijk overbodig, want onder Delphi gaat het wel lekker snel.
Onder Delphi gaat dit lekker snel (dan praat ik over 50 fps, zo op 't oog, bij wijze van spreken) maar onder BCB haal ik amper 2 fps. Eerst maar even de code:
In Delphi 6:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
| procedure TForm1.DrawNoise; var x, y: integer; ba: PByteArray; begin for y := 0 to bitmap.Height - 1 do begin ba := bitmap.ScanLine[y]; for x := 0 to 3 * bitmap.Width - 1 do ba[x] := Random(256); end; Canvas.Draw(0, 0, bitmap); end; |
In C++ Builder 5:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
| void TForm1::DrawNoise() { PByteArray ba; for(int y = 0; y < bitmap->Height; y++) { ba = (PByteArray) bitmap->ScanLine[y]; for(int x = 0; x < 3 * bitmap->Width; x++) { ba[x] = random(256); } } Canvas->Draw(0, 0, bitmap); } |
Wat heb ik geprobeerd om het op te lossen? Eerst heb ik de random-functie vervangen door een byte (die steeds groter wordt) om te kijken of de random-functie van BCB misschien gewoon erg traag is. Niet dus. Ik begon te vermoeden dat het aan de debugger lag, maar het uitschakelen van de debug-opties (of simpelweg op de 'release'-knop drukken bij de compiler-opties) hielp ook niets. Toen ben ik aan 't Googlen geslagen met de zoektermen 'borland builder slow debug release', maar dat levert weinig zinvols op; de topics gaan eigenlijk alleen maar over het trage compilen.
Zit ik in de goeie weg te zoeken en zie ik een debug-optie over 't hoofd of moet ik de oorzaak in een hele andere hoek zoeken? Of is dit gewoon de top'snelheid' van BCB?
OS: Windows 2000, Professor: XP1800, maarja, die info is eigenlijk overbodig, want onder Delphi gaat het wel lekker snel.