Namų darbas
Ką atiduoti
algo su load ir stats komandomis, praeinantį go test ./..., ir
matavimų lentelę.
1. Savo augimo kreivė
Pakartok 2 žingsnio lentelę savo kompiuteryje, n = 1 000 … 1 000 000:
| n | perkėlimai | perkopijuota | vidurkis vienam append |
|---|---|---|---|
Paskutinis stulpelis turi nustoti augti. Nurodyk, ties kuriuo n jis nusistovi, ir prie kokios reikšmės.
2. Rezervuota talpa
Pakartok tą patį su make([]Item, 0, n). Užpildyk tą pačią lentelę.
Kiek perkėlimų? Kiek perkopijuota? Vienu sakiniu paaiškink, kodėl.
3. Kur amortizacija nepadeda
Sukurk atvejį, kuriame append amortizacija neveikia: kaskart pasiekęs
talpą, nukirpk slice atgal iki cap-1 ir vėl pridėk.
Kiek kopijavimų vienam append gauni dabar? Paaiškink, kodėl amortizuota analizė
čia negalioja.
4. Įterpimas prieš pridėjimą
Pastatyk 100 000 įrašų biblioteką dviem būdais:
- a)
appendgale — 100 000 kartų; - b)
InsertAt(lib, 0, it)— visada į pradžią.
Suskaičiuok pasislinkimus abiem atvejais. Skirtumas turi būti keturių eilių dydžio. Nurodyk abu skaičius ir jų santykį.
5. Kada masyvas yra blogas pasirinkimas
Vienas pastraipos atsakymas, su skaičiais: aprašyk konkretų naudojimo
scenarijų, kuriame []Item yra netinkama struktūra, ir pasakyk, kurios
operacijos jį žlugdo.
(Trečioji pamoka pradės nuo lygiai tokio scenarijaus.)