SORU
16 Ocak 2009, Cuma


's re Python kullanmaya değer mi.derleme?

Python düzenli ifadeler için derleme kullanarak herhangi bir yararı var mı?

h = re.compile('hello')
h.match('hello world')

vs

re.match('hello', 'hello world')

CEVAP
16 Ocak 2009, Cuma


Bu deneyimi bir çok kez derlenmiş düzenli bir 1000'ler çalışan vardı versus the-fly üzerinde derleme yaptım ve herhangi bir algılanabilir bir fark farkında değil. Belli ki, bu anekdot, ve kesinlikle büyük bir argüman değilkarşıderleme, ama fark önemsiz olduğunun farkına vardım.

EDİT: Sonra hızlı bir bakışta gerçek Python 2.5 kitaplığı kod, gördüğüm Python dahili derler VE ÖNBELLEĞE yukarıdaki diyagram ne zaman kullanılır zaten (dahil aramaları için re.match()), yani sen gerçekten sadece değişen ZAMAN düzenli ifade alır derlenmiş, ve olmamalı kurtardığınız için çok zaman sadece zaman alır kontrol etmek için önbellek (bir anahtar Arama Bir iç dict yazın).

Modül re.py (yorumlar bana ait):

def match(pattern, string, flags=0):
    return _compile(pattern, flags).match(string)

def _compile(*key):

    # Does cache check at top of function
    cachekey = (type(key[0]),)   key
    p = _cache.get(cachekey)
    if p is not None: return p

    # ...
    # Does actual compilation on cache miss
    # ...

    # Caches compiled regex
    if len(_cache) >= _MAXCACHE:
        _cache.clear()
    _cache[cachekey] = p
    return p

Ben hala sık sık derleme öncesi düzenli ifadeler, ama sadece güzel, yeniden kullanılabilir bir isim için onları bağlamak için, herhangi bir beklenen performansı elde değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Barnacules Nerdgasm

    Barnacules N

    20 Temmuz 2006
  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • isupportthegosselins

    isupporttheg

    6 Aralık 2009