Prg1 aloitusharjoitukset

Nämä harjoitukset tarkistavat, että olet ymmärtänyt prg1- ja prg1-opt-ohjeet, auttavat sinua aloittamaan työn prg1:lle ja varmistavat, että osaat testata koodiasi paikallisesti.

PRG1-ohjeet

Kaikki kysymykset koskevat prg1-speksiä

Affiliaatio tulee aina olla varustettu…
Julkaisulla tulee aina olla…
Kuinka monta julkaisua voidaan yhdistää yhteen affiliaatioon?
Kuinka monta affiliaatiota voidaan yhdistää yhteen julkaisuun?
Mikä seuraavista pitää paikkansa julkaisujen suhteen?
Mitkä seuraavista pitävät paikkansa assosiatiivisten säilöjen suhteen?
Mitkä seuraavista ovat hyviä valintoja yksittäisen affiliaation tietojen tallentamiseen?
Miten voit vaihtaa työhakemistoa Qt Creatorissa?

PRG1-testausohjeet

Kaikki kysymykset koskevat prg1-testausohjeita. Perftest-tulosteet tässä harjoituksessa eivät ole todellisia lukuja, eikä niitä tule käyttää vertailuun oman toteutuksen kanssa.

Toiminnallisuuden testaaminen voidaan suorittaa
Suorituskykytesti voidaan suorittaa
Toiminnallisuustestit näyttävät eroja, mitä tehdä seuraavaksi?
Mitä on tärkeää huomioida suorittaessa perftestejä?
Mitä sanotaan komentolaskureiden käytöstä suorituskyvyn mittarina?

Seuraavat kysymykset koskevat seuraavaa perftest-tulostetta

> perftest get_all_affiliations 10 10 100;1000;10000;100000
Aikaraja kullekin N:lle on 10 sekuntia.
Jokaista N:ää kohden suoritetaan 10 satunnaista komentoa:
get_all_affiliations
     N ,    add (sec) ,   cmds (sec) ,  total (sec)
   100 ,      0,50000 ,    1         ,      1,50000
  1000 ,       1,0000 ,    2         ,       3,0000
 10000 ,      5,00000 ,    4         ,       9,0000
100000 , ADD Timeout!
>
Mitä funktiota perftestataan?
Aikaraja ylittyi/perftesti epäonnistui. Jos kyllä, miksi?

Seuraavat kysymykset koskevat seuraavaa perftest-tulostetta

> perftest get_all_publications 20 10 100;1000;10000;100000
Aikaraja kullekin N:lle on 20 sekuntia.
Jokaista N:ää kohden suoritetaan 10 satunnaista komentoa:
get_all_publications
     N ,    add (sec) ,   cmds (sec) ,  total (sec)
   100 ,      0,50000 ,    1         ,      1,50000
  1000 ,       1,0000 ,    2         ,       3,0000
 10000 ,      5,00000 ,    4         ,       9,0000
100000 ,      8,00000 , Timeout!
>
Mikä on aikaraja (sekunneissa) kullekin N:lle?
Kuinka monta kertaa testattava komento suoritetaan kullekin N:lle?
Miksi komento tulosti Timeout!?

Seuraavat kysymykset koskevat seuraavaa perftest-tulostetta

> perftest get_affiliation_name 10 10 5;10;50;100
Aikaraja kullekin N:lle on 10 sekuntia.
Jokaista N:ää kohden suoritetaan 10 satunnaista komentoa:
get_affiliation_name
      N ,    add (sec) ,   cmds (sec) ,  total (sec)
      5 ,      0,00004 , terminate called after throwing an instance of 'std::out_of_range'
  what():  unordered_map::at
Aborted (core dumped)
Mitä tapahtui perftestissä?

Seuraavat kysymykset koskevat seuraavaa perftest-tulostetta

> perftest get_all_affiliations 10 10 100;1000;10000;100000
Aikaraja kullekin N:lle on 10 sekuntia.
Jokaista N:ää kohden suoritetaan 10 satunnaista komentoa:
get_all_affiliations
      N ,    add (sec) ,  add (count) ,   cmds (sec) , cmds (count) ,  total (sec) , total (count)
    100 ,  0,000112247 ,       280203 ,   3,5244e-05 ,        43740 ,  0,000147491 ,       323943
   1000 ,  0,000116914 ,       569395 ,   3,8864e-05 ,        74040 ,  0,000155778 ,       643435
  10000 ,   0,00051654 ,      2740514 ,   8,6724e-05 ,       317460 ,  0,000603264 ,      3057974
 100000 ,  0,000976794 ,      5443984 ,  0,000131009 ,       619420 ,    0,0011078 ,      6063404
>
Kuinka monta komentoa suoritetaan get_all_affiliations-toiminnolla kun datan määrä on 10000 affiliaatiota ja julkaisua, ja iteraatioiden määrä on 10?
Kuinka kauan kommennon suorittamiseen kaikkiaan kului? (sekunteina, samoin kuin tulosteessa)
Kuinka monta komentoa tarvitaan 1000 affiliaation ja julkaisun lisäämiseen?
Kuinka monta komentoa tarvitaan lisättäessä 100000 julkaisua ja affiliaatiota JA suoritettaessa get_all_affiliations 10 kertaa?
Mitä voidaan sanoa perftest-tulosteesta: