hypergrep
hypergrep
grep
, ripgrep
, ugrep
, The Silver Searcher
เป็นต้น การทดสอบต่อไปนี้จะเปรียบเทียบประสิทธิภาพของ hypergrep
กับ:
v13.0.0
v2.2.0
v3.11.2
พิมพ์ | ค่า |
---|---|
โปรเซสเซอร์ | Intel(R) Core(TM) เจนเนอเรชั่น 11 i9-11900KF @ 3.50GHz 3.50 GHz |
ส่วนขยายชุดคำสั่ง | Intel® SSE4.1, Intel® SSE4.2, Intel® AVX2, Intel® AVX-512 |
ติดตั้งแรมแล้ว | 32.0 GB (ใช้งานได้ 31.9 GB) |
เอสเอสดี | อดาต้า SX8200PNP |
ระบบปฏิบัติการ | อูบุนตู 20.04 LTS |
คอมไพเลอร์ C++ | g++ (อูบุนตู 11.1.0-1ubuntu1-20.04) 11.1.0 |
vcpkg กระทำ: 662dbb5
ห้องสมุด | เวอร์ชัน |
---|---|
การแยกวิเคราะห์ | 2.9 |
คิวพร้อมกัน | 1.0.3 |
เอฟเอ็มที | 10.0.0 |
ไฮเปอร์สแกน | 5.4.2 |
libgit2 | 1.6.4 |
OpenSubtitles.raw.en.txt
การค้นหาต่อไปนี้จะดำเนินการในไฟล์ขนาดใหญ่ไฟล์เดียวที่แคชไว้ในหน่วยความจำ (~13GB, OpenSubtitles.raw.en.gz
)
นิพจน์ทั่วไป | จำนวนบรรทัด | เอจี | ugrep | ริปเกรป | ไฮเปอร์เกรป |
---|---|---|---|---|---|
นับจำนวนครั้งที่โฮล์มส์ทำอะไรบางอย่างhgrep -c 'Holmes did w' | 27 | ไม่มี | 1.820 | 1.022 | 0.696 |
ตัวอักษรที่มีส่วนต่อท้าย Regexhgrep -nw 'Sherlock [AZ]w+' en.txt | 7882 | ไม่มี | 1.812 | 1.509 | 0.803 |
ตัวอักษรที่เรียบง่ายhgrep -nw 'Sherlock Holmes' en.txt | 7653 | 15.764 | 1.888 | 1.524 | 0.658 |
ตัวอักษรธรรมดา (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่)hgrep -inw 'Sherlock Holmes' en.txt | 7871 | 15.599 | 6.945 | 2.162 | 0.650 |
การสลับตัวอักษรhgrep -n 'Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty' en.txt | 10078 | ไม่มี | 6.886 | 1.836 | 0.689 |
การสลับตัวอักษร (ไม่คำนึงถึงขนาดตัวพิมพ์)hgrep -in 'Sherlock Holmes|John Watson|Irene Adler|Inspector Lestrade|Professor Moriarty' en.txt | 10333 | ไม่มี | 7.029 | 3.940 | 0.770 |
คำที่อยู่รอบสตริงตัวอักษรhgrep -n 'w+[x20]+Holmes[x20]+w+' en.txt | 5020 | ไม่มี | 6นาที11ส | 1.523 | 0.638 |
torvalds/linux
การค้นหาต่อไปนี้ดำเนินการบนแผนผังซอร์สเคอร์เนล Linux ทั้งหมด (หลังจากรัน make defconfig && make -j8
) คอมมิตที่ใช้คือ f1fcb
นิพจน์ทั่วไป | จำนวนบรรทัด | เอจี | ugrep | ริปเกรป | ไฮเปอร์เกรป |
---|---|---|---|---|---|
ตัวอักษรที่เรียบง่ายhgrep -nw 'PM_RESUME' | 9 | 2.807 | 0.316 | 0.147 | 0.140 |
ตัวอักษรธรรมดา (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่)hgrep -niw 'PM_RESUME' | 39 | 2.904 | 0.435 | 0.149 | 0.141 |
Regex พร้อมคำต่อท้ายตามตัวอักษรhgrep -nw '[AZ]+_SUSPEND' | 536 | 3.080 | 1.452 | 0.148 | 0.143 |
การสลับตัวอักษรสี่ตัวhgrep -nw '(ERR_SYS|PME_TURN_OFF|LINK_REQ_RST|CFG_BME_EVT)' | 16 | 3.085 | 0.410 | 0.153 | 0.146 |
ยูนิโค้ดกรีกhgrep -n 'p{Greek}' | 111 | 3.762 | 0.484 | 0.345 | 0.146 |
apple/swift
การค้นหาต่อไปนี้จะดำเนินการในแผนผังต้นทางของ Apple Swift ทั้งหมด คอมมิตที่ใช้คือ 3865b
นิพจน์ทั่วไป | จำนวนบรรทัด | เอจี | ugrep | ริปเกรป | ไฮเปอร์เกรป |
---|---|---|---|---|---|
การประกาศฟังก์ชัน/โครงสร้าง/แจงนับตามด้วยตัวระบุที่ถูกต้องและวงเล็บเปิดhgrep -n '(func|struct|enum)s+[A-Za-z_][A-Za-z0-9_]*s*(' | 59026 | 1.148 | 0.954 | 0.154 | 0.090 |
คำที่ขึ้นต้นด้วยตัวอักษรตามด้วยตัวเลขอย่างน้อย 2 หลักhgrep -nw '[A-Za-z]+d{2,}' | 127858 | 1.169 | 1.238 | 0.156 | 0.095 |
ทำงานโดยขึ้นต้นด้วยตัวอักษรตัวพิมพ์ใหญ่ ตามด้วยตัวอักษรและตัวเลข และ/หรือขีดล่างhgrep -nw '[AZ][a-zA-Z0-9_]*' | 2012372 | 3.131 | 2.598 | 0.550 | 0.482 |
คำสั่งให้ป้องกันตามด้วยตัวระบุที่ถูกต้องhgrep -n 'guards+lets+[a-zA-Z_][a-zA-Z0-9_]*s*=s*w+' | 839 | 0.828 | 0.174 | 0.054 | 0.047 |
/usr
การค้นหาต่อไปนี้ถูกดำเนินการบนไดเร็กทอรี /usr
นิพจน์ทั่วไป | จำนวนบรรทัด | เอจี | ugrep | ริปเกรป | ไฮเปอร์เกรป |
---|---|---|---|---|---|
HTTPS หรือ FTP URL ใด ๆhgrep "(https?|ftp)://[^s/$.?#].[^s]*" | 13682 | 4.597 | 2.894 | 0.305 | 0.171 |
ที่อยู่ IP ของ IPv4 ใดๆhgrep -w "(?:d{1,3}.){3}d{1,3}" | 12643 | 4.727 | 2.340 | 0.324 | 0.166 |
ที่อยู่อีเมลใดๆhgrep -w "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}" | 47509 | 5.477 | 37.209 | 0.494 | 0.220 |
วันที่ถูกต้อง MM/DD/YYYY hgrep "(0[1-9]|1[0-2])/(0[1-9]|[12]d|3[01])/(19|20)d{2}" | 116 | 4.239 | 1.827 | 0.251 | 0.163 |
นับจำนวนค่า HEXhgrep -cw "(?:0x)?[0-9A-Fa-f]+" | 68042 | 5.765 | 28.691 | 1.439 | 0.611 |
ค้นหา C/C++ ใด ๆ เพื่อหาตัวอักษรhgrep --filter ".(c|cpp|h|hpp)$" test | 7355 | ไม่มี | 0.505 | 0.118 | 0.079 |
vcpkg
git clone https://github.com/microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install concurrentqueue fmt argparse libgit2 hyperscan
hypergrep
โดยใช้ cmake
และ vcpkg
git clone https://github.com/p-ranav/hypergrep
cd hypergrep
cmake
เก่ากว่า 3.19
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=<path_to_vcpkg>/scripts/buildsystems/vcpkg.cmake ..
make
cmake
ใหม่กว่า 3.19
ใช้การตั้งค่าล่วงหน้า release
:
export VCPKG_ROOT=<path_to_vcpkg>
cmake -B build -S . --preset release
cmake --build build
หากต้องการสร้างไบนารีสำหรับการพกพา x86_64 ให้เรียกใช้ตัวเลือก cmake ด้วย -DBUILD_PORTABLE=on
สิ่งนี้จะใช้ -march=x86-64 -mtune=generic
และ -static-libgcc -static-libstdc++
และเชื่อมโยงไลบรารีมาตรฐาน C++ และรันไทม์ GCC แบบคงที่ลงในไบนารี ซึ่งลดการพึ่งพาระบบเป้าหมาย