Diary?::2005-11-27

00:40

昨日紹介した bufferlist.vim のきっと便利な使いかた。 vim ではコマンドモードで :source 設定ファイル名 で特定の vim 用の設定ファイルを読み込める。そこで、一度に開きたいファイルの一覧を設定ファイルに書いてそこで最後に BufferList() を呼べば幸せな気分に。

n foo.py
n bar.py
n hoge.py
call BufferList()

という感じで。何かそういうプラグインとかがありそうだけど、探すのがたるかったので。

01:26

妹がいることを周囲の連中に話すと、結構な確率で羨ましがられる。まあそいつらはかなり腐った妄想をしているのだろうが、そうでない人からも割と羨ましがられる確率が高い気がする。

でも俺としては、二人いる妹の内一人は弟がよかったかも。だって弟 (別に兄でもいいけど) がいれば:

ゴメン、やっぱり欲しくない。

22:10

検索フレーズによって、その執念深さが全然違う。創価学会とかで検索してくる人は、表示順位が 50 番以降とか 3 桁台でも容赦なくアクセスしてくる。

22:36

嬉々としてくだらねえ論争しているのと、嬉々としてホモだのレズだの女装美少年だの書いているのと、果たしてどっちがまともかねえ?

こういう解答の奴は俺にとってはバカ
前者の方がまとも。
こういう解答する人のサイトは即巡回決定
後者の方がまとも。
多分正しい解答
どっちも別の意味でキチガイ。

全然関係ないけど、このサイトを白背景に黒文字とかにしてみたら、そっちの方がえらい格好よくて何だか負けた気分だ。やっぱ俺は配色とかそういうのを凝るとダメになるタイプっぽい。

試しに暫く、白背景のデザインでやってみよう (何か定期的にデザインを変えている気がするぞ) 。

11:50

最近の Python だと、文字列変数に対して s += "x" とかやってもそれなりにパフォーマンスが出るらしい。試しにちょっと試してみたけど、配列に入れて join と対して変わらない速度が出て結構驚いている。以前だったら絶望的なパフォーマンスだったのになあ。

Python 2.4.1 では明らかに差があった気がするけど、 2.4.2 からは改善されているみたい。これはどうも場合によっては文字列を破壊的に操作するようになったためらしい。それでも基本的に文字列の一部だけを書き換えるみたいな事は出来ないので注意。

とりあえず使ったテストコード。

import time

def time_count(func, *args):
	t = time.time()
	func(*args)
	return time.time() - t

def str_add(n):
	s = ''
	for i in range(n):
		s += str(i)

def str_join(n):
	s = []
	for i in range(n):
		s.append(str(i))
	''.join(s)

if __name__ == "__main__":
	import sys
	l = int(sys.argv[1])
	ad = []
	for i in range(100, l, 100):
		ad.append(time_count(str_add, i))
	jn = []
	for i in range(100, l, 100):
		jn.append(time_count(str_join, i))
	for p in  zip(ad, jn):
		print "str_add:", p[0], "str_join:", p[1]
		if p[0] > p[1]:
			print "str_join is faster."
		elif p[0] < p[1]:
			print "str_add is faster."
		else:
			"draw."

計算時間の増加量もそれほど違いが見られなかったので、多分どっちでも大丈夫だと思うけど。後方互換性というか、過去のバージョンでもパフォーマンスを出すのなら join する必要があるので、もうしばらくは文字列の加算は控えておこう。

Written by Kuwata Chikara
Creative Commons