Mam problem z wydajnością aplikacji w VB.NET. Prosta aplikacja za pomocą SQLClient'a wybiera ~700 tyś. rekordów z tabeli "A" bazy SQL Express i dla każdego rekordu wykonuje jednego SELECT'a do tabeli "B" sprawdzając czy pewna wartość z aktualnie przetwarzanego rekordu w niej występuje.
Po każdych 10 tyś przetworzonych rekordów wyświetlam informację o postępie przetwarzania i czasie w ms ile zajęło sprawdzenie ostatnich 10 tyś rekordów.
Problem polega na tym, że czasem aplikacja działa prawidłowo tj. kolejne paczki przetwarzane sa w podobnym czasie w granicach 2 s., a czasem odpalenie aplikacji powoduje, że czas przetworzenia paczki rekordów rośnie liniowo od ~2 s. do ponad ~8 s. dla ostatnich paczek.
Problem zdaje się wynikać z samego środowiska ponieważ dla testu zachowałem exe'ka "prawidłowo" działającego kodu i po kolejnym kórymś tam uruchomieniu pojawił się opisywany efekt.
Pytanie jest takie, czym może to być spowodowane? Czy istnieje jakiś wewnętrzny mechanizm , który odpala się w pewnym momencie pracy FrameWork'a i robi coś co może spowolnić wykonywanie aplikacji? Spotkał ktoś podobne zjawisko?
Dodatkowe info i sprawy które sprawdziłem za podpowiedzią innych:
-
FrameWork 1.1 i VS 2003.
-
SQL Express jest na tej samej maszynie co uruchamiana aplikacja więc raczej wykluczam wpływ innych aplikacji.
-
Maszyna ma 2 GB RAM'u i nie występuje efekt swapowania.
-
Zajętość pamięci obu procesów (SQL'a i mojej aplikacji) nie wzrasta w trakcie wykonywania.
-
Do SQL'a utrzymywane jest jedno połączenie.
-
Bazy tymczasowe na SQL'u nie rosną w trakcie pracy palikacji.
-
Tabela "B" zawiera aktualnie 0 (zero) rekordów (odpada problem rosnącej objętości, aktualizowania indeksu itp.)
Za wszelkie podpowiedzi z góry dzięki i pozdrawiam
root666
PS. Póki co nie wrzucam kodu, post i tak już jest długi