From: matz@... (Yukihiro Matsumoto) Date: 1998-03-18T11:57:54+09:00 Subject: [ruby-list:7154] Re: please apply me まつもと ゆきひろです In message "[ruby-list:7153] please apply me" on 98/03/18, SHUDOH Kazuyuki writes: |首藤といいます。 |昨日、書店で O'Reilly の Python 本 (日本語訳) を見つけ、 |手に取って眺めました。 |ぱっと見、Ruby の方が好みです。 |まつもとさん、センスいいよなあ、と感じます。 どーもです.うれしいなあ. Pythonといえば,思い出す話なんですが. 先日簡単なgrepを作って速度比較をしました. % time ruby -ne 'print if /ruby/' /usr/dict/* % time perl -ne 'print if /ruby/' /usr/dict/* んで,やっぱりperlにはかなわないんで,30%増しくらいの実行時 間でした.んではpythonでやってみようと思い立ったのは良いです が,まず引っかかったのが,grep書くのが結構面倒ということです. あっちにつまずきこっちにつまずきして書いたのがこれ. #! /usr/local/bin/python import sys from regex import * pat = compile("ruby") for f in sys.argv[1:]: file = open(f, "r") while 1: line = file.readline() if not line: break if pat.search(line) >= 0: print line, file.close() で,かなり高速化されたと言うpython 1.5でも実行時間はrubyの4 倍弱(3.8倍)でした.うーむ,遅い.そこでメソッドサーチをイン ライン化してみました. #! /usr/local/bin/python import sys from regex import * pat = compile("ruby") search = pat.search for f in sys.argv[1:]: file = open(f, "r") readline = file.readline while 1: line = readline() if not line: break if search(line) >= 0: print line, file.close() 若干高速化されましたが,まだrubyの3倍以上(3.2倍)かかります. そこでpython 1.5で標準採用されたと言うpcre(perl compatible regular expression)を使ってみる事にしました.具体的にはregex をreに変えるだけです. すると,なんと実行時間はrubyの8.2倍かかりました.pcreって遅 いのね. というわけで,簡単な事を簡単にできないpythonは私の趣味には合 わないよなあ,遅いし,という結論が出たのでした. まつもと ゆきひろ /:|)