RE #: F # -de iň çalt regex motoryny nädip gurduk | Mewayz Blog Skip to main content
Hacker News

RE #: F # -de iň çalt regex motoryny nädip gurduk

Teswirler

9 min read Via iev.ee

Mewayz Team

Editorial Team

Hacker News

Deňi-taýy bolmadyk tizligi çykarmak: RE #

aňyrsynda pelsepe

Programma üpjünçiligini ösdürmek dünýäsinde yzygiderli aňlatmalar teksti derňemek we tassyklamak üçin esasy guraldyr. Şeýle-de bolsa, islendik işläp düzüjiniň bilişi ýaly, pes optimallaşdyrylan regex maglumatlary gaýtadan işlemegi haýalladyp, ulanyjy tejribesine täsir edip, möhüm öndürijilik päsgelçiligine öwrülip biler. Modully iş ulgamymyz çylşyrymly kärhanalaryň iş akymlaryny iň ýokary netijelilik bilen dolandyrmak üçin döredilen Mewaýzda, beýle päsgelçilikleri alyp bilmeýäris. Bize diňe bir güýçli däl, gülgüne çalt regex dwigateli gerekdi. Bu, bütinleý F # bilen ýazylan ýokary öndürijilikli regex hereketlendirijisi bolan RE # gurmak üçin syýahatymyza sebäp boldy. Biziň maksadymyz, hatda gaty optimallaşdyrylan C ++ kitaphanalaryndan has ýokary çözgüt döretmek üçin F # funksional-ilkinji paradigmasyny ulanmakdy we biz üstünlik gazandyk.

Näme üçin Regex dwigateli üçin F #?

F # saýlamak bilgeşleýin we strategiki boldy. C ýa-da C ++ ýaly diller köplenç ýerine ýetiriş kritiki kody üçin başlangyç bolup dursa-da, F # -niň üýtgeşik aýratynlyklarynyň regex baha berişine mahsus bolan çylşyrymly döwlet dolandyryşy üçin örän laýykdygyna ynanýardyk. Onuň güýçli nagyş gabat gelmegi, üýtgewsizligi we aňlatma görnüşi ulgamy bize problema domenini has tebigy we ýalňyşlyk üçin az ýer bilen modellemäge mümkinçilik berdi. El bilen dolandyrmak we çylşyrymly görkeziji logika bilen göreşmegiň ýerine, esasy algoritmiň üstünde durup bilerdik. Bu, ygtybarly iş operasiýa ulgamynyň diregi bolup durýan berk, durnukly we ýokary öndürijilikli modullary gurmak Mewayz pelsepesi bilen ajaýyp gabat gelýär. F # çalt we dogry kod ýazmaga bize güýç berdi.

öndürijilik üçin arhitektura: NFA-dan düzülen ýerine ýetirişe

Esasy, regex hereketlendirijileriniň köpüsi kesgitlemeýän Finite Automaton (NFA) -da gurulýar. Kynçylyk, bu awtomaty nädip simulasiýa etmegiňizden ybarat. Adaty hereketlendirijiler köplenç her giriş nyşanlary üçin NFA-ny ädimme-ädim gezýän terjimeçi modelini ulanýarlar. RE # başgaça, has agressiw çemeleşýär: regex nagşyny iş wagtynda göni ýöriteleşdirilen F # funksiýasyna düzýäris. “Just-in-Time” (JIT) ýygyndysy diýlip atlandyrylýan bu amal abstrakt nagşy ýokary derejede optimallaşdyrylan .NET Aralyk Dil (IL) koduna öwürýär. Netijede, setire gabat gelmek indi grafiki gurluşy düşündirmegi öz içine almaýar, gaýtam barlagy berk aýlawda ýerine ýetirýän aýratyn ýerine ýetirilen funksiýany ýerine ýetirýär. Arhitekturamyzyň esasy düzüm bölekleri:

Ready to put this into practice?

Join 6,203+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime