czy wyciąganie zmiennych "wyżej" podnosi wydjaność?

czy wyciąganie zmiennych "wyżej" podnosi wydjaność?
T9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 329
0

Piszę aplikacje która przetwarza sygnały "realtime" i zastanawiam się czy stosowanie tego typu sztuczek podnosi wydajność. Czytelność nie i jest kluczowa bo to są pojedyncze od izolowane metody, i jak zabraknie wydajności to program zwyczajnie nie będzie działać.

Kopiuj
 
// metody i pętla są wykonywane wielka ilosc razy
// czy to jest szybsze od tego
 double zmienna;
void Metoda()
{
  zmienna=0;
/// rób coś
}

void Metoda()
{
  double zmienna=0;
/// rób coś
}

// albo czy to jest szybsze
void Metoda()
{
double zmienna=0;
for(int i=0; i<n; i++)
   {  
     zmienna=i;
     /// rób coś
   }
}
// niż to
void Metoda()
{

for(int i=0; i<n; i++)
   {  
     double zmienna=0;
     zmienna=i;
     /// rób coś
   }
}

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Dlaczego nie zrobisz benchmarku? :P

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 55
1

Możesz skorzystać z klasy Timer i zmierzyć ile czasu potrzeba na wykonanie wszystkich tych funkcji, chociaż wydaje mi się, że szybsza będzie deklaracja pustej zmiennej przed pętlą i przed metodą (sam mam taki nawyk), bo wtedy unikasz deklarowania tej samej zmiennej tyle razy ile przebiegów ma pętla. Z drugiej strony deklaracja zmiennej i przypisanie wartości do pustej referencji może trwać tyle samo, musisz potestować

T9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 329
0

@Patryk27 bo miło jest wiedzieć co się robi, a nie robić co się wie wie :P
No nic trzeba będzie sprawdzić;/

DibbyDum
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Polska, Kraków
3

Bez różnicy kod pętli w IL będzie taki sam. double i tak jest immutable więc bez różnicy. :)

neves
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1114
3
  1. W c# należy deklarować zmienne jak najbliżej miejsce wykorzystania, bo pod taki scenariusz był język projektowany, a co za idzie pewnie i optymalizator.
  2. Przedwczesna mikro optymalizacja jest źródłem wszelkiego zła, bodaj Knuth to pierwszy powiedział i wszędzie jest to powtarzane.
  3. I tak jak DibbyDum napisał, kod pośredni prawdopobnie zostanie wygenrowany taki sam, a nawet jeśli nie to jest jeszcze szansa że optymalizacja na etapie kompilacji do kodu maszynowego wygeneruje identyczny kod.
  4. Co implikuje że dopóki czegoś nie zmierzysz i nie bedziesz miał twardych dowodów, nie warto bawić się w mikro optymalizację.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.