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

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ć.

 
// 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ś
   }
}

1

Dlaczego nie zrobisz benchmarku? :P

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ć

0

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

3

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

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ę.

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