Alexander og jeg skrev noget af vores bachelorprojekt om til C her i fredags. Man skal virkelig passe på sine hukommelsesallokeringer. Ja, helt klart. Jeg fandt et memory leak, der lækkede 100 MiB hukommelse i sekundet. Hvilken del blev C-ificeret? Damned Årsagen var at vi gav et objekt med tilbage til Python uden at dekrementere dets ref-count, så fortolkeren stadig troede at nogen havde brug for det. Den del af spillogikken, der tjekker om træk er gyldige. Det bliver kaldt ret mange tusinde gange pr. spil, så vi tænkte at der måske kunne være lidt optimering at hente i at omskrive det til C. Ok, så I har ikke selv brugt alloc og free. Det er alligevel noget. Metoden selv blev 7 gange hurtigere! Wow! Jo. Det endte vi også med at gøre. Vi havde brug for lister af variabel størrelse. Det endte med en struct med et "size" felt og et "list" felt. Inkluderer det speedup, frem og tilbagen mellem C og python? Det burde det gøre, ja! Gjorde det nogen stor effekt for hvor hurtigt I kan evaluere? Jeg tror ikke at der er særligt meget "frem og tilbage"-stads. Det ser ud til at det kode man skriver bliver kastet ret direkte ind i fortolkeren. Det gjorde en stor forskel for når vi laver 1-ply. "ply" er hvor mange træk man kigger fremad. Så kun at kigge på det umiddelbart næste træk er 0-ply, hvilket er det vi har gjort indtil nu 1-ply var for langsomt. Det tog ca. 6-7 sekunder at evaluere ét træk. Alexander lavede lidt omskrivninger, så TensorFlow udregnede det hurtigere og fik det ned på ca. 3-4 sekunder *pr. spil*. Så skrev vi noget af det om til C, og nu er vi så på ca. 2 sekunder pr. spil med 1-ply, hvilket er ret vildt. Det er så godt at Python-fortolkeren kan udvides med C! caspervk, kan I optimere jeres bachelorprojekt med et par C-moduler? Det er en hel lille sektion til rapporten det der. Yeah. Kopierer bare det her verbatim ind.