Paweł Łukasiewicz
2019-06-23
Paweł Łukasiewicz
2019-06-23
Wprowadzenie
Ostatni wpis z tej krótkiej serii dotyczy problemu na który natknąłem się analizują kod mający przeszło 8 lat. Zanim jednak przejdziemy do sedna problemu zachęcam do przeczytania poprzednich artykułów z tej serii:
Jako programiści nie lubimy pisać zbyt długiego kodu. Późniejsza interpretacja może być problematyczna a sam kod będzie ciągnął się przez wiele linii. Warto mieć jednak na uwadze, że czasem (pozorna) oszczędność może doprowdzić do pojawienia się wielu problemów związanych z wydajnością naszego kodu. Analizując kod natrafiłem na wielokrotne używanie Array.Length wewnątrz pętli for. Taki zapis powoduje wywołanie właściwości Length wraz z każdą iteracją – wydłuża to znacznie czas każdego przejścia. Dużo lepszym wyjściem jest przechowywanie tej wartości w zmiennej i używanie jej w zdefiniowanym warunku.
Testy
Czasami kod wyraża więcej niż kilka zdań artykułu. Poniżej kod napisany w celu przeprowadzania testów:
static void Main(string[] args)
{
Stopwatch stopwatch = new Stopwatch();
string[] cars = {
"Audi RS6",
"Pagani Huayra",
"Maserati Gran Tourismo",
"Nissan GTR",
"Lamborghini Huracan Performante"
};
stopwatch.Start();
for (int i = 0; i < cars.Length; i++)
{
}
Console.WriteLine(".Length wewnątrz petli: " + stopwatch.ElapsedTicks.ToString());
stopwatch.Restart();
int counter = cars.Length;
for (int i = 0; i < counter; i++)
{
}
Console.WriteLine(".Length jako parametr: " + stopwatch.ElapsedTicks.ToString());
Console.ReadKey();
}
Mam nadzieję, że wynik dla niego nie będzie zaskoczeniem. We wprowadzeniu zawarłem wszystkie istotne informacje związane z użyciem właściwości Length.
Podsumowanie
Jest to ostatni wpis z tej serii. Jeżeli uda mi się wygospodarować więcej czasu chciałbym poruszyć podobną tematyką związaną ze stroną bazy danych. Tam również udało się znaleźć wiele interesujących przypadków - w tej części jednak skupiłem się na języku C#.