Compact GC Head

Compact GC Head

Python の GCヘッダを減らすために今挑戦していることを紹介します。

351a10f392414345ed67a05e986dc4dd?s=128

INADA Naoki

June 25, 2018
Tweet

Transcript

  1. $PNQBDU 1Z($@)FBE UDGNNFFUVQ *OBEB/BPLJ !NFUIBOF

  2. ͓લ୭Α w Ҵాɹ௚࠸ !NFUIBOF  w ,-BC*OD w 1ZUIPO$PSF%FWFMPQFS w

    $PNQBDU0SEFSFE%JDU w .Z42-%SJWFST (P 1ZUIPO
  3. 1ZUIPOͷ($ wࢀরΧ΢ϯτ w॥؀ࢀর($ɹˡࠓ೔ͷ࿩ wࢼݧ࡟আΞϧΰϦζϜ w ʮΨϕʔδίϨΫγϣϯ
 ࣗಈతϝϞϦ؅ཧΛߏ੒͢Δཧ࿦ͱ࣮૷ʯ
 IUUQTXXXBNB[PODPKQEQ

  4. ࢼݧ࡟আͷ֓ཁ w ΦϒδΣΫτͷू߹Λ८ճͯ͠ɺू߹಺ͷΦϒδΣΫτؒ ͷࢀরͷ਺͚ͩࢀরΧ΢ϯτΛݮΒͯ͠ΈΔ w ࢀরΧ΢ϯτ͕࢒ͬͯΔΦϒδΣΫτ͸֎͔Βࢀর͞Εͯ ͍Δˠϧʔτʢੜଘʣ w ϚʔΫˍεΠʔϓͷΑ͏ʹɺϧʔτ͔Β࠶ؼతʹੜଘΦϒ δΣΫτΛܾఆ

  5. 1ZUIPOͷ࣮૷ ϫʔυ _gc_head *gc_next; _gc_head *gc_prev; ssize_t gc_refcnt;

  6. HD@OFYU HD@QSFW w ૒ํ޲ϦϯΫϦετ w ֤ੈ୅ͷΦϒδΣΫτͷू߹Λ؅ཧ w ೚ҙͷΦϒδΣΫτΛ0  Ͱ֎ͤΔ

  7. HD@SFGDOU w ࢼݧ࡟আ༻ࢀরΧ΢ϯτ   w ෛͷఆ਺ w 53"$,&% ΑΓݹ͍ੈ୅ͷΦϒδΣΫτ

     w 6/53"$,&% ؅ཧ֎ʣ w 5&/5"5*7&-:@6/3&"$)"#-& ࡟আީิ  w 3&"$)"#-& ੜଘ֬ఆ  w CJUΛผ్ͷϑϥάͰར༻
  8. None
  9. ϚʔΫϑΣʔζ w HDMJTUΛ८ճͯ͠HD@SFGDOU͕ w VOSFBDIBCMFϦετʹҠಈ ࡟আީิ  w ੜଘ֬ఆɺΦϒδΣΫτͷࢀরઌνΣοΫ w

    ࢀরઌ͕VOSFBDIBCMFͳΒHDMJTUͷ຤ඌʹ෮ؼ w HDMJTUͷऴ୺ʹ౸ୡͨ͠ʹ࠶ؼతͳϚʔΫ׬ྃ
  10. $PNQBDU($)FBE wHD@QSFWͱHD@SFGDOUͰϝϞϦڞ༗ w HD@QSFW͸Ϧετ͔ΒཁૉΛ࡟আ͢ΔͨΊ w ࢼݧ࡟আத͸ॱํ޲८ճ͚ͩͰ͍͍ w ϚʔΫϑΣʔζͰHDMJTU VOSFBDIBCMFؒҠಈ w

    ϋοΫͰ͖ͦ͏ʁ
  11. None
  12. )BDLJOHNBSL w ॳظঢ়ଶHD@OFYUͱHD@SFGDOUͷΈͷ୯ํ޲ϦϯΫϦ ετ w ҰͭखલΛ֮͑ͳ͕Β८ճ w ੜଘ֬ఆͳΒHD@SFGDOUΛ௵ͯ͠HD@QSFWQSFW w VOSFBDIBCMFʹҠಈ͢Δͱ͖΋HD@SFGDOUΛ௵͢

    w ෮ؼ࣌͸HD@SFGDOUͰ୯ํ޲ϦϯΫϦετԽ
  13. ໰୊ ࢀরઌʹ͸ύλʔϯ͋Δɻ
 Ͳ͏ݟ෼͚Δ͔ɻ

  14. HD@SFGDOU ࠶ w ࢼݧ࡟আ༻ࢀরΧ΢ϯτ   w ෛͷఆ਺ w 53"$,&%

    ΑΓݹ͍ੈ୅ͷΦϒδΣΫτ  w 6/53"$,&% ؅ཧ֎ʣ w 5&/5"5*7&-:@6/3&"$)"#-& ࡟আީิ  w 3&"$)"#-& ੜଘ֬ఆ  w CJUΛผ్ͷϑϥάͰར༻
  15. ঢ়ଶ਺μΠΤοτ w 53"$,&% 6/53"$,&% w HDMJTUʹೖ͍ͬͯΔ͔Ͳ͏͔ͰϏοτඞཁ w HD@OFYU/6--Ͱ؅ཧ͞ΕͯΔ͔൑அ w 5&/5"5*7&-:@6/3&"$)"#-&

    3&"$)"#-& w Ϗοτඞཁ w CJUΛผ్ͷϑϥάͰར༻ w ߹ܭϏοτඞཁ
  16. 5BHHFE1PJOUFS w ϙΠϯλม਺ʹೖΔΞυϨεͷ͏ͪɺ஋͕ʢओʹʹʣݻ ఆ͍ͯ͠ΔϏοτΛϑϥάͳͲʹར༻͢Δ w ϑϥάΛ࢖ͬͯϙΠϯλ͡Όͳ͍஋ΛೖΕΔ w ୹͍จࣈྻ CJUͳΒόΠτ·Ͱʁ 

    w ੔਺ w ྨࣅͷٕज़ුಈখ਺఺਺ͷ/B/ͷ৑௕ੑΛ࢖ͬͨ
 /B/#PYJOH
  17. ΞυϨεͷະ࢖༻CJU w Y@ͷΞυϨε࣮࣭ͬͯόΠτͰ͸ʁ w ࠷ۙόΠτʹ֦ு͞ΕͨΒ͍͠ w ্ҐϏοτΛ৮Δͷ͸কདྷੑʹෆ҆ w ͦ΋ͦ΋ΞʔΩґଘ w

    .BMMPD݁Ռ͕όΠτBMJHOFE w ԼҐCJU௵ͤΔ w ϚΠφʔͳΞʔΩˍNBMMPD࣮૷Ͱෆ҆
  18. HD@QSFWHD@SFGT HD@QSFWHD@SFGT 6OSFBDIBCMF $PMMFDUJOH طଘϑϥά

  19. ࢀরΧ΢ϯτͷ্ք w HD@SFGDOU͕Φʔόʔϑϩʔ͠ͳ͍͔ߟ͑Δ w Ϣʔβʔۭؒͷ֤ϙΠϯλ͕ͭͷࢀরΛ࡞Δ w ΞυϨεۭ͕ؒCJUͰɺϙΠϯλ͕CZUFͳΒɺϙΠϯλ ͷ਺ͷ্ք͸?  

    w 0, w ΞυϨεۭ͕ؒCJUͰɺϙΠϯλ͕CZUFͳΒɺϙΠϯλ ਺ͷ্ք͸?   w CJU༨ͬͯͳ͍ w Ϣʔβʔۭؒ͸ී௨ʹ(#ʢCJU௒ʣʹͳΔ
  20. ݁࿦ w CJU؀ڥͳΒ w ࢀরΧ΢ϯλ΋࣮֬ʹCJU͸༨ͬͯΔ w ΄΅࣮֬ʹϙΠϯλͷԼҐCJU͸࢖ΘΕͳ͍ w CJU؀ڥͩͱ w

    ࢀরΧ΢ϯτ΋CJU༨ͬͯͳ͍ w CZUFΞϥΠϯͷNBMMPD࣮૷ͷةݥੑ͕૿͑Δ
  21. ࠓޙͷํ਑ w HD@OFYUͷԼҐCJU΋ར༻͢Δ w HD@QSFWΛVJOU@Uʹ͢Δ w $PNQBDU࣮૷ͱطଘ࣮૷Λ੾Γସ͑Δ w CJU؀ڥͰ͸σϑΥϧτͰैདྷ࣮૷

  22. ਓࡐืू w$1ZUIPOͷ։ൃʹڵຯ͕͋Δਓ wQZUIPOKQͷEJTDPSEαʔόʔʹ
 DPSFEFWνϟϯωϧ࡞Γ·ͨ͠ɻ wট଴ίʔυ[VNDX