Giter VIP home page Giter VIP logo

addressbook's Introduction

SysOpy_Zadanie1

It is a library providing two implementations of address book - list and BST. Compilation to shared and static library. Benchmarks provided.

Exercise

Zarządzanie pamięcią, biblioteki, pomiar czasu

Zadanie 1. Ksiazka adresowa

Zaprojektuj i przygotuj zestaw funkcji (bibliotekę) do zarzadzania "ksiazka kontaktowa" przechowujaca kontakty zawierajace: Imię, Nazwisko, Date urodzenia, email, telefon, adres w postaci

a) drzewa binarnego

b) listy dwukierunkowej

Biblioteka powinna umozliwiac:

  • tworzenie i usuwanie ksiazki kontaktowej

  • dodanie i usuniecie kontaktu do/z ksiazki (bez utraty innych kontaktow i bez wyciekow pamieci)

  • wyszukiwanie elementu w ksiazce

  • sortowanie/przebudowanie ksiazki wg wybranego pola (Nazwisko, Data urodzenia, email, telefon)

Przygotuj plik Makefile, zawierający polecenia kompilujące pliki źródłowe biblioteki oraz tworzące biblioteki w dwóch wersjach: statyczną i dzieloną.

Zadanie 2. Program korzystający z biblioteki

Napisz program testujący działanie funkcji z biblioteki z zadania 1.

Program powinien stworzyc ksiazki adresowe skladajace sie z 1000 elementow a realizowane w postaci listy dwukierunkowej oraz drzewa binarnego. Dane możesz wygenerowac chocby na stronkach typu generatedata.com albo uzyc danych losowych.

W programie zmierz i wypisz czasy realizacji podstawowych operacji:

  • stworzenie ksiazki adresowej,

  • dodanie pojedynczego elementu (czasy mierz dla dodawania po kolei kazdego elementu)

  • usuwanie kontaktu z ksiazki (zmierz czasy dla przypadku optymistycznego oraz pesymistycznego)

  • wyszukanie elementu w ksiazce (zmierz czasy dla przypadku optymistycznego oraz pesymistycznego)

  • przesortowanie/przebudowanie ksiazki

Mierzac czasy pokaz trzy wartosci: czas rzeczywisty, czas uzytkownika i czas systemowy.

Zadanie 3. Testy i pomiary

a) Przygotuj plik Makefile, zawierający polecenia kompilujące program z zad 2 na trzy sposoby:

  • z wykorzystaniem bibliotek statycznych,
  • z wykorzystaniem bibliotek dzielonych (dynamiczne, ładowane przy uruchomieniu programu),
  • z wykorzystaniem bibliotek ładowanych dynamicznie (dynamiczne, ładowane przez program), oraz uruchamiający testy.

Wyniki pomiarow zbierz w pliku results.txt. Plik zalacz jako element rozwiazania.

b) Rozszerz plik Makefile z punktu 3a) dodajac mozliwosc skompilowania programu na roznych poziomach optymalizacji -O0...-Os. Przeprowadz ponownie pomiary kompilujac i uruchamiajac program na roznych poziomach iotymalizacji.

Wyniki pomiarow dodaj do pliku results.txt. Otrzymane wyniki krotko skomentuj.

Zadanie 4. Analiza pliku core

Zmodyfikuj program z punktu 2 tak aby wygenerowany został zrzut pamieci (plik core). Korzystajac z gdb oraz zrzutu pamieci znajdz w programie miejsce i stan programu powodujace blad krytyczny i zrzut pamieci. Do oddawanego zestawu dodaj plik tekstowy gdb.txt a w nim: wskaz w jaki sposob zmodyfikowales program z punktu 2 i jaka operacja powoduje blad i zrzut pamieci (ew jakie kroki podczas uruchamiania programu należy wykonac aby blad i zrzut wystapily) a także opisz w jaki sposob posluzyles się/nalezy posluzyc sie gdb do analizy pliku core oraz wskaz/zalacz te elementy zrzuconego obrazu pamieci które potwierdzaja fakt oraz okolicznosci wystapienia (prefabrykowanego) bledu.

Uwaga. Jesli program z p.2 zrzuca cora – nie zostanie to zaliczone jako rozwiazanie punktu 4 :)

addressbook's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.