grep
و ripgrep
و ugrep
و The Silver Searcher
وما إلى ذلك. تقارن الاختبارات التالية أداء hypergrep
مع:
v13.0.0
v2.2.0
v3.11.2
يكتب | قيمة |
---|---|
المعالج | الجيل الحادي عشر من Intel(R) Core(TM) i9-11900KF @ 3.50 جيجا هرتز 3.50 جيجا هرتز |
ملحقات مجموعة التعليمات | إنتل® SSE4.1، إنتل® SSE4.2، إنتل® AVX2، إنتل® AVX-512 |
ذاكرة الوصول العشوائي المثبتة | 32.0 جيجابايت (31.9 جيجابايت قابلة للاستخدام) |
SSD | اداتا SX8200PNP |
نظام التشغيل | أوبونتو 20.04 إل تي إس |
مترجم C++ | ز++ (أوبونتو 11.1.0-1ubuntu1-20.04) 11.1.0 |
التزام vcpkg: 662dbb5
مكتبة | إصدار |
---|---|
argparse | 2.9 |
قائمة الانتظار المتزامنة | 1.0.3 |
fmt | 10.0.0 |
فرط المسح | 5.4.2 |
libgit2 | 1.6.4 |
OpenSubtitles.raw.en.txt
يتم إجراء عمليات البحث التالية على ملف واحد كبير مخبأ في الذاكرة (~13 جيجابايت، OpenSubtitles.raw.en.gz
).
التعبير العادي | عدد الخطوط | حج | ugrep | ripgrep | com.hypergrep |
---|---|---|---|---|---|
قم بإحصاء عدد المرات التي فعل فيها هولمز شيئًا ما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 kernel بأكملها (بعد تشغيل make defconfig && make -j8
). الالتزام المستخدم هو f1fcb.
التعبير العادي | عدد الخطوط | حج | ugrep | ripgrep | com.hypergrep |
---|---|---|---|---|---|
حرفية بسيطة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 بأكملها. الالتزام المستخدم هو 3865 ب.
التعبير العادي | عدد الخطوط | حج | ugrep | ripgrep | com.hypergrep |
---|---|---|---|---|---|
إعلان الوظيفة/الهيكل/التعداد متبوعًا بمعرف صالح وقوس فتحhgrep -n '(func|struct|enum)s+[A-Za-z_][A-Za-z0-9_]*s*(' | 59026 | 1.148 | 0.954 | 0.154 | 0.090 |
الكلمات التي تبدأ بأحرف أبجدية متبوعة برقمين على الأقل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 |
عبارة Guard Let متبوعة بمعرف صالح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 | ripgrep | com.hypergrep |
---|---|---|---|---|---|
أي عنوان URL لـ HTTPS أو FTPhgrep "(https?|ftp)://[^s/$.?#].[^s]*" | 13682 | 4.597 | 2.894 | 0.305 | 0.171 |
أي عنوان IPv4 IPhgrep -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 |
حساب عدد القيم السداسيةhgrep -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++ القياسية ووقت تشغيل دول مجلس التعاون الخليجي بشكل ثابت في الملف الثنائي، مما يقلل التبعيات على النظام المستهدف.