Quantcast
Channel: ぱわふる » Python
Viewing all articles
Browse latest Browse all 7

置換🔞のベンチマーク🐍

$
0
0

re.comileを変数に入れるかどうかでは、正規表現が単純なためか、意外と変わらない模様です。

#!/usr/bin/env python

from benchmarker import Benchmarker
import re

header_pattern       = re.compile(r'^.*----------+.+?----------+', re.DOTALL)
annotation_pattern   = re.compile(r'[#.*?]')
footer_pattern       = re.compile(r'\n底本:「.*$', re.DOTALL)
head_newline_pattern = re.compile(r'^(?:\u000D|\u000A)+')
tail_newline_pattern = re.compile(r'(?:\u000D|\u000A)+$')

text = """
医者と病人
夢野久作

 死にかかった病人の枕元でお医者が首をひねって、
「もう一時間も六カしいです」
 と言いました。
「とてもこれを助ける薬はありません」
 これを聴いた病人は言いました。
「いっその事、飲んでから二、三日目に死ぬ毒薬を下さい」



底本:「夢野久作全集7」三一書房
   1970(昭和45)年1月31日第1版第1刷発行
   1992(平成4)年2月29日第1版第12刷発行
初出:「九州日報」
   1923(大正12)年11月18日
※底本の解題によれば、初出時の署名は「香倶土三鳥」です。
入力:川山隆
校正:土屋隆
2007年7月21日作成
青空文庫作成ファイル:
このファイルは、インターネットの図書館、青空文庫(http://www.aozora.gr.jp/)で作られました。入力、校正、制作にあたったのは、ボランティアの皆さんです。
"""

def main():
    print( normalize1(text) )
    print('---')
    print( normalize2(text) )

    with Benchmarker(1000*1000, width=20) as bench:
        @bench('normalize1')
        def _bm(bm):
            for i in bm: normalize1(text)

        @bench('normalize2')
        def _bm(bm):
            for i in bm: normalize2(text)

def normalize1(text):
    text = re.sub(header_pattern,       r'', text)
    text = re.sub(annotation_pattern,   r'', text)
    text = re.sub(footer_pattern,       r'', text)
    text = re.sub(head_newline_pattern, r'', text)
    text = re.sub(tail_newline_pattern, r'', text)
    return text

def normalize2(text):
    text = re.sub(re.compile(r'^.*----------+.+?----------+', re.DOTALL), r'', text)
    text = re.sub(re.compile(r'[#.*?]'),                               r'', text)
    text = re.sub(re.compile(r'\n底本:「.*$', re.DOTALL),                r'', text)
    text = re.sub(re.compile(r'^(?:\u000D|\u000A)+'),                     r'', text)
    text = re.sub(re.compile(r'(?:\u000D|\u000A)+$'),                     r'', text)
    return text

main()

出力:

医者と病人
夢野久作

 死にかかった病人の枕元でお医者が首をひねって、
「もう一時間も六カしいです」
 と言いました。
「とてもこれを助ける薬はありません」
 これを聴いた病人は言いました。
「いっその事、飲んでから二、三日目に死ぬ毒薬を下さい」
---
医者と病人
夢野久作

 死にかかった病人の枕元でお医者が首をひねって、
「もう一時間も六カしいです」
 と言いました。
「とてもこれを助ける薬はありません」
 これを聴いた病人は言いました。
「いっその事、飲んでから二、三日目に死ぬ毒薬を下さい」
## benchmarker:         release 4.0.1 (for python)
## python version:      3.4.2
## python compiler:     GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)
## python platform:     Darwin-14.3.0-x86_64-i386-64bit
## python executable:   /Users/username/.anyenv/envs/pyenv/versions/3.4.2/bin/python
## cpu model:           Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz 
## parameters:          loop=1000000, cycle=1, extra=0

##                        real    (total    = user    + sys)
normalize1             26.0480   24.3900   24.2000    0.1900
normalize2             29.3381   28.1900   28.0100    0.1800

## Ranking                real
normalize1             26.0480  (100.0) ********************
normalize2             29.3381  ( 88.8) ******************

## Matrix                 real    [01]    [02]
[01] normalize1        26.0480   100.0   112.6
[02] normalize2        29.3381    88.8   100.0


Viewing all articles
Browse latest Browse all 7

Latest Images

Trending Articles





Latest Images