# Beautiful Soup での scraping が遅かったので、Nuitka でコンパイルしてみたんだけど全然速くならなかった話

# はじめに

Raspberry Pi になにかインストールした時は、後でまた必要になることもあろうと思ってその手順をスクリプトにして残す (opens new window)ようにしているのですが、6年もやってるとそんなスクリプトが随分たまってて、これがまったく便利な財産に成長していて、良いことを思いついてくれた過去の自分への感謝につきない次第です。ありがとう!過去の私!

そんな中の go のインストールスクリプト (opens new window)で、当初は go の download サイト (opens new window)で最新バージョンを調べて手動で設定 (opens new window)してインストールするよにしてたのですが、2回ほど使ってみてさすがにめんどくさいと反省して Beautiful Soup で scraper をかいてみた (opens new window)のですが、これが遅い、RPi の model B+ で1分弱かかってしまいます、model 3B でも10秒以上

pi@raspberrypi:~/gc_setups/golang $ time python go_latest_version.py 
go1.14.3

real	0m52.814s
user	0m44.679s
sys	0m1.509s
pi@raspberrypi:~/gc_setups/golang $ python -m getrpimodel
B+

コンパイルすると速くなるかな?と思ったのがきっかけです

全く関係ないですがビューティフル・ソープって読んじゃってる方がいらっしゃってびっくりした事があります。美味しい魚のスープとかは見た目も美しいですが、最近みなくなりましたが手洗い場に網でぶらさがってる石鹸とか結構ばっちいものではないかとおもいます

# Nuitka でコンパイル

Nuitka のインストールスクリプトはこちら (opens new window)です

前述の scraper を Nuitka でコンパイルするスクリプトは こちら (opens new window)、その場で打っておしまいなコマンドラインもとっとけばあとで役に立つかもしれないのでもったいないので全部とってます、日本的なもったいない精神ですね

で、できあがったバイナリを実行してみると

pi@raspberrypi:~/gc_setups/golang $ time ./go_latest_version.bin 
From callback for ffi.gc <cdata 'Cryptography_STACK_OF_ACCESS_DESCRIPTION *' 0x2f0bed8>:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/cryptography/hazmat/backends/openssl/decode_asn1.py", line 384, in <lambda>
    access_descriptions = []
AttributeError: 'module' object has no attribute 'sk_ACCESS_DESCRIPTION_pop_free'
go1.14.3

real	1m1.288s
user	0m52.114s
sys	0m1.918s

なんかメッセージでてる上に、コンパイル前に 一分弱 だった実行時間が 一分強 に増えてる ^^;;;

というわけで、別の方法に続きます


Last Updated: 2021/2/28 9:04:39