was ist schneller oder macht es keinen unterschied ??
-
hallo,
class xTest { public: HWND m_hWnd; }
wenn ich nun mehrmals auf m_hWnd zugreifen will
void function(xTest* pTest) { //ist meim mehrfachen zugriff auf hWnd schneller HWND hWnd=pTest->m_hWnd; BOOL bTest=IsWindow(hWnd); //oder BOOL bTest=::IsWindow(pTest->m_hWnd); //oder ist alles beides genau so schnell, nur mit dem Unterschied das ich für hWnd unnötig speicher benötige und hWnd erst mal zuweisen muß ??? }
volker
-
Da du diech im Bereich UserInterface befindest, sollte es keine Auswirkung haben, der User ist e beliebig viel langsamer als der Code an dieser Stelle.
IMHO sollten die beiden bei einem gut optimierenden Compiler nicht wesentlich unterscheiden.
Deiser Thread gehört prinzipelle eher nach C++ da er Klassen enthält oder noch besser nach Winapi
-
danke, ich versuch es nochmal bei c++
-
Die lokale Variable ist vermutlich schneller. Das dürfte auch für den Compiler nicht so einfach rauszuoptimieren sein, denn in Anwendungen mit mehreren Threads kann es theroetisch passieren, dass pTest->m_hWnd sich in der Zwischenzeit ändert. Das wird in diesem speziellen Fall höchstvermutlich nicht vorkommen, aber das weiß der Compiler ja nicht. Das heißt, wenn du pTest->m_hWnd benutzt, wird erst pTest dereferenziert, der Member rausgesucht und dann benutzt, während du die lokale Variable schon hast. Was auf der Maschine genau passiert, hängt von deinem Rechner ab, auf jeden Fall hast du mit der lokalen Variable im Zweifel weniger Arbeit.