App-Greple
view release on metacpan or search on metacpan
RIPGREP-STUDY.md view on Meta::CPAN
### 3.2 æ¡ B ã®å®æ¸¬: JSON çµç±ã®ãªã¼ãã¼ããã
| å¦ç | æé |
|---|---:|
| `rg --json fox corpus.txt`ï¼96k ããããJSON 26MB åºåï¼ | 0.09s |
| âã Perl (JSON::PP) ã§ãã¼ã¹ | **8.0s** |
| ï¼åèï¼ç¾è¡ greple ã®åæ¤ç´¢å
¨ä½ | 0.82s |
ããã夿°æãJSON ã®ãã¼ã¹ã ãã§ç¾è¡ greple ã® 10 åã®æéããããï¼ã³ã¢ ã¢ã¸ã¥ã¼ã« JSON::PP ã®å ´åã
JSON::XS ã追å ä¾åã«ããã°æ°ç¾ ms ç¨åº¦ã¾ã§ç¸®ãããããã§ã byteâchar 夿ã»
ãããã¯æ§ç¯ãå ããã¨ç¾è¡ã¨ã®å·®ã¯ã»ã¼æ¶ããï¼ã
ãããå°æ°æã¯ããããã¹ãã£ã³ãã§ã¼ãºï¼80msï¼ããåããªãã**ã©ã¡ãã®ã±ã¼ã¹ã§ãå²ã«åããªãã**
### 3.3 libripgrepï¼grep cratesï¼
ripgrep 㯠`grep-matcher` / `grep-searcher` / `grep-printer` çã®ã¯ã¬ã¼ã群ã«åå²ããã¦ãã
ï¼[libripgrep PR #1017](https://github.com/BurntSushi/ripgrep/pull/1017)ï¼ã
ã©ã¤ãã©ãªã¨ãã¦åå©ç¨å¯è½ãæ£è¦è¡¨ç¾ã¨ã³ã¸ã³ã¯ Rust regexï¼æéãªã¼ãããã³ + SIMDï¼ã¨
PCRE2ï¼`--pcre2` / `-P`ãå¾èªã¿ã»å¾æ¹åç
§å¯¾å¿ï¼ã® 2 系統ã
RIPGREP-STUDY.md view on Meta::CPAN
### æ¡ B: rg --json ã®ä½ç½®æ
å ±ã greple å
é¨ä½ç½®ã«å¤æãã ã鿍奍ã
ã¦ã¼ã¶ã¼ã以忤è¨ããæ¹å¼ãæè¡çã«ã¯ §3.1 ã®ã¨ãããrg ã®ãªãã»ããã¯å¤æå¾ UTF-8 ãã¤ãåºæºã
ãªã®ã§ãæé ãªãã»ããã 1 ãã¹ã§æåä½ç½®ã«å¤æããã° greple ã®å
é¨è¡¨ç¾ã«è¼ãããã¨èªä½ã¯å¯è½ã
ããã:
1. **æ¹åä¸éãå°ãã**: åããã®ã¯ã¹ãã£ã³ãã§ã¼ãºï¼26MB ããã ~80msï¼ã®ã¿ã
ãããå¾å¦çï¼æ¯é
çã³ã¹ãï¼ã¯ greple å´ã«æ®ãã
2. **JSON ãªã¼ãã¼ããããé广**: ããã夿°æãJSON::PP ã§ãã¼ã¹ã« 8 ç§ï¼å®æ¸¬ï¼ã
JSON::XS ãä¾åã«å ãã¦ãå¤æã»æ§ç¯ã³ã¹ãã§å©å¾ã¯ã»ã¼ç¸æ®ºã
3. **æ©è½å¶ç´ãå¤ã**: 颿°ãã¿ã¼ã³ï¼`&func`ï¼ä¸å¯ã`--inside/--outside` ã®é åãã¿ã¼ã³ã
åæ§ã«å¤é¨åããªãã¨çæè½ã¡ã`--if` ãã£ã«ã¿ã¨ã®åæãæ£è¦è¡¨ç¾æ¹è¨å·®ã
ããã 0 å¹
ã»éãªãé åã®ã»ãã³ãã£ã¯ã¹å·®ãçã®äºææ§ç©´ã夿°ã
4. 表示ã®ããã©ã®ã¿ã¡è©²å½ãã¡ã¤ã«ã®ãã³ã¼ã㨠slurp ã¯å¿
è¦ã§ãI/O é¢ã®ç¯ç´ããªãã
**çµè«**: å®è£
ãã¦ãç¾è¡æ¯ã§ã»ã¼éããªãããäºææ§ãªã¹ã¯ã ãå¢ããã
### æ¡ C: Rust ã©ã¤ãã©ãª (grep crates) ã FFI::Platypus ã§å¼ã¶ ã鿍奍ã
**æè¡çæç«æ§ã¯ç¢ºèªã§ãã**:
( run in 0.513 second using v1.01-cache-2.11-cpan-6aa56a78535 )