2020-05-21 [長年日記]

"forループが遅い"は正しくない [Python]

"forループが遅いからmapで書こう"は正しくない。
forループより「Pythonで書かれた関数(lambda含む)」の呼び出しコストの方が馬鹿にならない。

リストに入った文字列に対して、それぞれ2文字目から2文字分を切り取った文字列でリストを作ることを考える(まだ曖昧だけど本筋じゃないので許して)

seq = [''.join(str(random.randint(0, 9)) for s in range(5)) for _ in range(1_000_000)]

とかして用意しておこう。


result = list(map(lambda x: x[2:4], seq))

より、愚直なforループ

result = []
for x in seq:
    result.append(x[2:4])

の方が速い。

しかし"mapが遅い"という結論にははならない。

愚直なforループより、

result = list(map(itemgetter(slice(2, 4)), seq))

の方が速いから。(itemgetter は operatorモジュールからimportすること)

lambdaとitemgetterとの差から、"mapが遅い"のではなくて、"lamdaの呼び出し/実行が遅い"と考えるのがいいだろう。


とはいえ結局、

result = [x[2:4] for x in seq]

がさらに速いので"内包表記と(関数呼び出しを伴わない)式で書けるならそれでいい"ということで。


2020-05-11 [長年日記]

macOS + Homgebrew + pyenvでtkinterが使えるPythonをビルドしたい [python]

Homebrewでtcl-tkをインストールしておいて、

PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/usr/local/opt/tcl-tk/include' --with-tcltk-libs='-L/usr/local/opt/tcl-tk/lib -ltcl8.6 -ltk8.6'" pyenv install 3.7.4

などとする。

via https://github.com/pyenv/pyenv/issues/1375#issuecomment-533182043


2020-04-30 [長年日記]

ツインスター・サイクロン・ランナウェイ [novel]


アステリズムに花束を
https://amzn.to/3bUe5J2
百合としては全然駄目だった。「ツインスター・サイクロン・ランナウェイ」ぐらい。
SFとしては「色のない緑」が最高に熱かった。

リモートワークになって [etc]

通勤時間で本を読む時間を意識的に作らないといけなくなったの、わりとしんどい。


2020-03-31 [長年日記]

イデアの影, 平成怪奇小説傑作集2, 巴里マカロンの謎, ツインスター・サイクロン・ランナウェイ [novel]


イデアの影-The shadow of Ideas
森 博嗣
https://amzn.to/33Y2MfV
めずらしい感じ。雰囲気はあるけど……

平成怪奇小説傑作集2 (創元推理文庫)
東 雅夫 編
https://amzn.to/2xE5pHH
「トカビの夜」「帰去来の井戸」

巴里マカロンの謎 (創元推理文庫)
米澤 穂信
https://amzn.to/2Uysi8k
刊行のニュースを見て小躍りしてしまった。面白い。このシリーズが一番好き。

ツインスター・サイクロン・ランナウェイ
小川 一水
https://amzn.to/3azuQsu
短編の前にこちらを先に読めて幸せだった。


2020-03-01 [長年日記]

VirtualBoxでホストOSのIPアドレスを設定する [tech]

備忘録

vboxmanage hostonlyif ipconfig vboxnet0 --ip 172.16.26.1


VirtualBoxでホストオンリーアダプターの設定をしただけでは、ホストOSのアドレスが変わるわけじゃなかった……。