Šerloks Holmss un ciparu mistērija

Spēlējos ar algoritmiem un sekundēm, un saskāros ar pagaidām pilnīgi neizprotamu lietu, kas aizgāja teju vai what is this I dont even līmenī – testu izpilde ar aizdomīgu regularitāti iebremzē uz pāris milisekundēm pie pirmā ievadfaila apstrādes. Vai arī pie otrā šad tad.

Tas, ka ielāde varētu bremzēt, gana labi būtu skaidrojams ar cietā diska bremzītēm utt. Tādēļ pārvācos uz RAM disku. Tur vajadzētu būt pietiekami ātri:

┌ peter:peter(8) : /dev/shm/ld3 : 00:31:20 : 0.54
│$ dd if=foo of=bar bs=4M count=200
200+0 records in
200+0 records out
838860800 bytes (839 MB) copied, 1,19067 s, 705 MB/s

Tomēr nekā, un mani skaitlīši joprojām izskatās šādi:

┌ peter:peter(3) : /dev/shm/ld3 : 00:12:37 : 0.45
│$ for i in {1..6}; do ./tulkotajs testi/$i.words testi/$i.text hash >/dev/null; done
0.000480 0.012452
0.000154 0.005189
0.000996 0.005622
0.000976 0.005368
0.009447 0.005674
0.009288 0.005505
┌ peter:peter(3) : /dev/shm/ld3 : 00:12:51 : 0.46
│$ for i in {6..1}; do ./tulkotajs testi/$i.words testi/$i.text hash >/dev/null; done
0.014055 0.005632
0.009398 0.005519
0.000977 0.005321
0.000989 0.005517
0.000140 0.005245
0.000140 0.005295

Pirmajā kolonnā ir CPU laiks sekundēs funkcijai, kas ielasa datu struktūrās vārdnīcas vārdus (1. un 2. piemērā ir 100, 3. un 4. – 1000, 5. un 6. – 10000 vārdu) no n.words, otrajā – funkcijai, kas nolasa no n.text 10000 vārdus un translē tos atbilstoši pirmajā solī izveidotajai vārdnīcai. Pie tam 1. un 2. vārdnīcas atšķiras tikai ar ievaddatu secību un 1. un 2. teksta faili pilnībā sakrīt, līdzīgi arī pārējiem diviem pārīšiem.

Īpatnēji, ka, ielādējot vispirms mazāku failu, bremzīte ir gan pirmajā, gan otrajā solī, savukārt sākot ar lielāko – tikai pirmajā. Ja vairākas reizes atkārto, tad gadās ik pa brīdim arī normāls rezultāts. Un nu vislielākā mīkla – kādēļ manā laptopā tā notiek gandrīz visu laiku (izmēģinājos gan aizvērt Firefox, gan pamēģināju pat no virtuālās konsoles kā root), uz otra datora atkārtot izdevās tikai tad, kad atvēru vaļā mammas Firefox saglabāto sesiju ar daudziem tabiem un vismaz vienu Flash spēlīti un tad mēģināju testēt, savukārt uz diviem serveriem nesanāca pat tad, ja trīs procesos (divkodolu procesori abiem) rēķināju π. Acīmredzot uzdevuma analizēšanai testu rezultātus nāksies iegūt uz kāda no serveriem, citādi sanāks galīgi šķībi.

In other news, šodien pamēģināju Īana mezglu, ar kuru aizsiet kurpju šņores var zibenīgi ātri. Tā kā bildītē gan es [vēl] nevaru, bet ātrāk kā parasto mezglu gan, šķiet, varu bez problēmām sasiet. Izpētiet bildītes saitē Noskatieties video demonstrāciju un pamēģiniet pāris reizes, nav nemaz tik sarežģīti – es iemācījos no bildītēm un eksperimentiem ar kurpju auklām, ko kursabiedrs pēkšņi izvilka no kabatas. :)

Pēdējās nedēļas laikā dikti bieži pieķeru sevi klausāmies Hadouken! – Play The Night un Druley – Ketamine Ocean. Piedevām prieciņš uznāca, kad atskaņotājs izdomāja ieshufflēt man kādu laiciņu nedzirdēto Man Like Me – London Town (Doorly’s Cockney Wideboy Remix).

Iedrukāts iekš Kompīši, Sāpe ar birkām , , , . Ieliec grāmatzīmi uz pastāvīgo saiti.

6 sakāmie par Šerloks Holmss un ciparu mistērija

  1. wizulis teica:

    Neesmu datoriķis, bet vai aizkavi nevarētu radīt process, kamēr no rama pieprasītā informācija aizkļūst līdz procim?
    Nezinu, kā tas notiek, bet pieņemu, ka procesoram ir jāizveido pieprasījums un tad tik pēc kāda laika viņš sāk saņemt vajadzīgos datus, ne?

  2. Pēteris teica:

    Parasti mērījumus izpilda daudz reižu, un ņem vērā vidējos rezultātus. Katru atsevišķo mērījumu var ietekmēt, piemēram, kešatmiņas, vai procesora enerģijas taupīšanas režīmu pārslēgšanās. Ja novirzes saglabājas arī tad, kad kopējie izpildes laiki ir minūtēs, vai vismaz sekundēs, tad ir jēga pētīt cēloņus tālāk.

    • Pēteris teica:

      Vēlāk, protams, izpildīju daudzas reizes, lai būtu kaut cik vienmērīgi rezultāti.

      Enerģijas taupīšanas režīmi ir laba ideja. Lai arī uzdevums jau sen nodots, būs jāpapēta kādā brīvā brīdī. :)

Pateikt kaut ko

E-pasta adrese netiks publicēta. Obligātie lauki atzīmēti ar *

*

Var lietot HTML birkas un atribūtus: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Draugiem.lv pase