$30 off During Our Annual Pro Sale. View Details »

How Go cache tests

How Go cache tests

A presentation at Go 1.10 Release Party.

Seiji Takahashi

February 20, 2018
Tweet

More Decks by Seiji Takahashi

Other Decks in Programming

Transcript

  1. )PX(P$BDIF5FTUT
    (P3FMFBTF1BSUZJO5PLZP
    (VOPTZ*OD
    #VTJOFTT%FWFMPQNFOU5FBN
    4PGUXBSF&OHJOFFS
    4FJKJ5BLBIBTIJ
    !@@UJNBLJO@@

    View Slide

  2. Seiji Takahashi
    @__timakin__
    • Career
    • DeNA
    • Platform Development
    • Serverside Engineering (Perl)

    • Translimit
    • Game Development: Craft Warrirors
    • Game Client Side (Cocos-2dx, C++)

    • Gunosy
    • Application Dev: LUCRA
    • Serverside Engineering (Go)
    • iOS Client Side (Swift)
    • Engieering
    • Language: Go (Contributed), Swift
    • Platform: GAE, AWS

    View Slide

  3. View Slide

  4. "HFOEB
    w 8IBUJTUFTUDBDIJOH
    w .ZpSTUDPOUBDUXJUIUIJTGFBUVSF
    w *NQMFNFOUBUJPO

    View Slide

  5. "HFOEB
    w 8IBUJTUFTUDBDIJOH
    w .ZpSTUDPOUBDUXJUIUIJTGFBUVSF
    w *NQMFNFOUBUJPO

    View Slide

  6. 8IBUJTUFTUDBDIJOH
    if the test executable and 

    command line match a previous run and 

    the files and environment variables consulted by that run
    have not changed either, go test will print the previous test
    output, replacing the elapsed time with the string “(cached).”

    View Slide

  7. 8IBUJTUFTUDBDIJOH
    5IFqBHTFYFDVUBCMFXJUIBDBDIFPQUJPO
    • -cpu
    • -list
    • -parallel
    • -run
    • -short
    • -v

    View Slide

  8. 8IBUJTUFTUDBDIJOH
    5IFqBHUPJHOPSFDBDIJOH
    • -count=1
    %FMFUFDBDIFEIJTUPSZXJUIAHPDMFBOA
    • go clean -testcache

    View Slide

  9. 8IBUJTUFTUDBDIJOH
    Benchmarking, and cpu/mem profiling might slightly
    change from run to run.
    So they aren’t cached.
    /PODBDIFBCMF TUBUFGVM
    PQUJPOT

    View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. "HFOEB
    w 8IBUJTUFTUDBDIJOH
    w .ZpSTUDPOUBDUXJUIUIJTGFBUVSF
    w *NQMFNFOUBUJPO

    View Slide

  15. .ZpSTUDPOUBDUXJUIUIJTGFBUVSF

    DNEHPDPWFSBHFQSPpMFTIPVMECFDBDIFE
    XJUIUFTUT

    View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. In the process of code-reading and implementing,

    code is often written near an original caching execution.

    By chance I’ve read that code before I actually use the

    caching strategy.
    DBDIFBCMFDPWFSQSPpMF
    .ZpSTUDPOUBDUXJUIUIJTGFBUVSF

    View Slide

  21. "HFOEB
    w 8IBUJTUFTUDBDIJOH
    w .ZpSTUDPOUBDUXJUIUIJTGFBUVSF
    w *NQMFNFOUBUJPO

    View Slide

  22. *NQMFNFOUBUJPO
    3FHJTUFSUFTUDPNNBOE

    View Slide

  23. *NQMFNFOUBUJPO
    $PNNBOE*OJUJBMJ[BUJPO

    View Slide

  24. *NQMFNFOUBUJPO
    4FUVQDBDIFPQUJPOGPSCVJMEJOHBQBDLBHF

    View Slide

  25. *NQMFNFOUBUJPO
    $IFDLBOFYJTUFODFPGDBDIFBSUJGBDUT

    View Slide

  26. *NQMFNFOUBUJPO
    1BSTFDBDIFFYQJSBUJPOUJNF SVO5FTU


    View Slide

  27. *NQMFNFOUBUJPO
    (FUUIFEFGBVMUEJSQBUIPGDBDIFBSUJGBDUT

    View Slide

  28. *NQMFNFOUBUJPO

    View Slide

  29. *NQMFNFOUBUJPO
    5SZJOHUPVTFDBDIF

    View Slide

  30. *NQMFNFOUBUJPO
    $IFDLXIFUIFSUIFPQUJPOTBSFDBDIFBCMF

    View Slide

  31. *NQMFNFOUBUJPO
    -PBECZUFBSSBZTPGCVJMUUFTUBSUJGBDUT
    BOEWBMJEBUFUIFFYQJSBUJPOUJNF

    View Slide

  32. *NQMFNFOUBUJPO
    8SJUFUIFl DBDIFE
    zTUEPVUJOUPUIFCVGGFS

    View Slide

  33. *NQMFNFOUBUJPO
    AHPDMFBOUFTUDBDIFA

    View Slide

  34. -FU`TDBDIF
    w "MMPGTUBUFMFTTUFTUTXPVMECFDBDIFEBOE
    IJHIQFSGPSNBODF
    w (PDBDIFEFQFOETPOCJOBSZDBDIFBOE

    SFDPSEPGUIFFYQJSBUJPOUJNF
    w *UJTKVTUBOFXGFBUVSFTPMFU`TDPOUSJCVUFUP
    (P

    View Slide