Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

1

28.07.2006, 18:02

kostet es zeit ...

... wenn ich in einer funktion ständig eine variable defniere, und nach jeden aufruf diese variable wieder freigebe?

also in einer funktion die im programmablauf dauernd aufgerufen wird beispielsweise RenderFrame();

mal angenommen ich mach das immer so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
void flip()
{
HDC dcRenderTarget;

    // [...]


ReleaseDC(BMan.hMainWnd, dcRenderTarget);
}


also wie gesagt.. die läuft die ganze zeit.. wärs nicht besser/zeitsparender/schneller wenn ich dcRenderTarget global definiere, und erst am ende freigebe?


*edit:
sry wollts eigentlich in 'C, C++, C#, Delphi & Java' posten ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Anonymous

unregistriert

2

28.07.2006, 19:56

Ich sag immer und überall: "Was man hat, das hat man."

Und was man hat, das muß man natürlich nicht neu reservieren ;) Denn in C++ ist es wie überall im Leben: Alles was man macht kostet Zeit. Nur jetzt haufenweise globalen Kram deshalb zu machen, hat einen weit negativeren Aspekt, als eine variable neu zu erstellen für Berechnungen.

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

3

28.07.2006, 20:00

ich sag ja nichts bei einer zähler variable.. aber diese eine variable muss ich definieren .. und wieder freigeben usw.
und die funktion ReleaseDC kostet sicher auch ein wenig zeit nicht?
also ist es ja nicth so doof wenn ich die variable global mache oder? ich mein.. ich brauch sie sowieso die ganze zeit über :?:
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

4

28.07.2006, 21:43

Hast du eine Vorstellung, was alles passiert, wenn du irgendeine Funktion aufrufst?

Da ist eine lokale Variable auf dem Stack auch nicht mehr schlimm. Un so teuer wird die Erzeugung eine DC nun auch wieder nicht sein, als dass man allen guten Programmierstil über Bord werfen muss.

Kannst ja mal ein Profiling machen, wieviele FPS du gewinnst, wenn du das Biest global machst. Ich glaube der Nutzen wiegt gar nichts gegen die Fehlerquellen, die man sich damit einhandelt.

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

5

29.07.2006, 13:58

frage: wie wäre es in diesem zusammenhang ne static variable einzubauen? abgesehen davon, dass man sich mit dem release was einfallen lassen müsste...
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

6

29.07.2006, 14:35

naja gut.. ich denke ich lass es einfach so ^^

das mit den FPS ist egal.. weil die sind auf max. 30/sek. beschränkt
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Phili

unregistriert

7

29.07.2006, 16:59

Zitat

das mit den FPS ist egal


War das jetzt ernst gemeint? :shock:

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

8

29.07.2006, 17:15

ja.. ich will ja nur wissen obs schneller wäre.. sollte ich jemalds gut in proggen werden, will ich wissen auf was man achten soll und auf was nicht.. so gesehn ist es mir egal ob der DC global oder nicht ist. ^^
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

29.07.2006, 17:20

Da HDC ja nur ein Zeiger ist, macht es hier keinen großen Unterschied (wäre es ein echtes Objekt mit Konstruktor/Destruktor, der jedes Mal aufgerufen würde, käme es eben darauf an, wie viel Zeit die brauchen).
Die Variable landet auf dem Stack und wird beim Verlassen der Funktion wieder vom Stack heruntergeholt. Das kostet praktisch nichts. Bei sehr zeitkritischen Funktionen, die Millionen mal aufgerufen werden, würde so etwas schon eher ins Gewicht fallen.

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

10

29.07.2006, 17:28

mhm .. ok. ich denke meine frage ist beantwortet :)
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Werbeanzeige