Jak testujemy Twoje programy?

Skompilowane programy uruchamiane są podczas oceny w specjalnym wirtualnym środowisku, które umożliwia precyzyjny i deterministyczny pomiar czasu ich działania. Dzięki temu:

  • mamy pewność, że na zmierzony czas nie wpływają inne programy działające na komputerze sprawdzającym czy też operacje takie jak dostępy do dysku,
  • publikując oprogramowanie obsługujące to środowisko, dajemy Wam możliwość uruchomienia swoich programów w takich samych warunkach, jak przy ocenie końcowej,
  • możemy wykorzystywać do sprawdzania komputery wieloprocesorowe i techniki wirtualizacji bez obawy o wpływ innych uruchomionych aplikacji na wyniki oceny.

Cele te realizujemy przez zastosowanie modelu procesora opartego na architekturze Intel x86 (32-bitowej). Szczegółowy opis modelu można znaleźć poniżej, natomiast warto o nim wiedzieć, że:

  • uruchamianie programów w przygotowanym środowisku nie wymaga żadnych specjalnych ustawień podczas kompilacji,
  • na wynik pomiaru czasu nieznacznie wpływa wersja oraz konfiguracja kompilatora, a także wybór systemu operacyjnego,
  • wirtualny procesor zachowuje się tak, jakby miał bardzo dużo pamięci podręcznej — dostępy do pamięci są szybsze niż na rzeczywistym procesorze.

Uruchamianie środowiska na własnym komputerze

Każdy z Was może uruchomić na swoim komputerze program w naszym środowisku testowym. Dostępne są dwie wersje środowiska. Obie wersje opierają się na tym samym modelu i powinne dawać zbliżone wyniki:

  • stara wersja - działa na systemach Windows i Linux; można ją pobrać z repozytorium oitimetool-bin na Githubie. Instrukcja uruchomienia znajduje się w pliku readme-pl.txt. Warto jednak wiedzieć, że przed opublikowaniem środowiska usunęliśmy te jego fragmenty, które odpowiadały za bezpieczeństwo naszych sprawdzaczek.
  • nowa - działa tylko na systemie Linux; można ją pobrać z repozytorium sio2jail na Githubie. Jest to wersja obecnie używana w SIO. Paczkę z wersją binarną środowiska i wygodnym skryptem do uruchamiania można pobrać poniżej.

Sposób działania modelu

W tej części opisujemy przyjęte założenia w obowiązującym modelu. Będziemy je aktualizować na bieżąco, a ewentualne zmiany ogłaszać w serwisie SIO.

Wykorzystywany model opiera się na zliczaniu instrukcji wykonanych przez uruchomiony program, co w odzwierciedla procesor z bardzo dużą pamięcią podręczną. Ewaluację takiego modelu na zadaniach Olimpiady Informatycznej można zobaczyć w rozdziale 3 następującej pracy:

Sz. Acedański, Wykorzystanie sprzętowych liczników zdarzeń do oceny wydajności algorytmów. Praca magisterska, WMiM UW (2009).

Wersja bieżąca (29.07.2011)

  • Zakładamy równe czasy wykonania wszystkich instrukcji – jeden cykl zegara.
  • Zakładamy zegar procesora o częstotliwości 2GHz.
Pliki: