Który kod szybszy?

0

Witam,
Czy to:

class Effect{
...
public:

inline u32 getNumPasses();

}

//implementacja
u32 Effect::getNumPasses()
{
	return numPasses;
}

for(u32 i=0; i<effect->getNumPasses(); ++i)
{
     effect->beginPass(i);
     mSkinnedMesh->DrawSubset(i);
     effect->endPass();
}

wykona się tak samo szybko jak to:

class Effect{
...
public:

u32 getNumPasses();

}

//implementacja
u32 Effect::getNumPasses()
{
	return numPasses;
}

u32 maxNr = effect->getNumPasses();

for(u32 i=0; i<maxNr; ++i)
{
     effect->beginPass(i);
     mSkinnedMesh->DrawSubset(i);
     effect->endPass();
}

Czy jednak kod ze zmienną lokalną będzie szybszy?

1

Zależy od kompilatora.

0

jeśli zrobisz tak:

class Effect{
...
public:
 
u32 getNumPasses() const {return numPasses;}
 
}

to w większość kompilatorów powinno zrobić inline (słowo inline najczęściej jest ignorowane) i kod powinien działać tak samo, ale w zasadzie tak jak napisał @winerfresh, zależy od kompilatora.

1 użytkowników online, w tym zalogowanych: 0, gości: 1