Rumah > pembangunan bahagian belakang > C++ > Kenapa `\ d` lebih perlahan daripada` [0-9] `dalam C# regex?

Kenapa `\ d` lebih perlahan daripada` [0-9] `dalam C# regex?

Linda Hamilton
Lepaskan: 2025-01-31 18:31:13
asal
237 orang telah melayarinya

Why is `d` Slower Than `[0-9]` in C# Regex?

C#Ekspresi biasa

lebih perlahan daripada lebih perlahan d [0-9] Artikel ini membincangkan penemuan yang mengejutkan dalam enjin ekspresi biasa C

perbezaan antara d dan [0-9] [0-9] d

Sebab utama perbezaan kecekapan adalah perbezaan antara kedua -dua watak ini:

d [0-9] : Padankan mana -mana watak nombor Unicode. Ini termasuk bukan sahaja nombor standard 0-9, tetapi juga nombor lain yang digunakan dalam bahasa dan sistem penulisan yang berbeza. Sebagai contoh, nombor Parsi dan nombor Devanagari juga

.

    :
  • hanya sepadan dengan nombor 0-9. Ia adalah perwakilan padat set aksara . d Kesan terhadap prestasi d
  • Apabila memadankan rentetan dengan ungkapan biasa, enjin ekspresi biasa perlu membandingkan setiap aksara dalam rentetan dengan kelas aksara yang ditentukan. Untuk , ia mesti melakukan pemeriksaan tambahan untuk menentukan sama ada watak itu adalah nombor Unicode, yang mungkin lebih tinggi daripada watak pemeriksaan mudah dalam julat 0-9. [0-9] Pengesahan Ujian [0123456789] Kod ujian yang disediakan oleh
  • menunjukkan perbezaan prestasi ini. Pada lebih daripada 10,000 rentetan rawak (setiap rentetan mengandungi kira -kira 50%daripada nombor), hasil berikut diperolehi:

Ekspresi biasa : 00: 00: 00.2141226 (lebih perlahan)

Ekspresi biasa d: 00: 00: 00.1357972 (cepat)

Ekspresi biasa : 00: 00: 00.13888997 (sedikit lebih perlahan daripada )

Kesimpulan
  • d Walaupun adalah singkatan mudah
  • , ia tidak semestinya pilihan terbaik dari segi prestasi. Jika anda hanya perlu memadankan nombor standard 0-9, disyorkan untuk menggunakan julat aksara
  • . [0-9]

Atas ialah kandungan terperinci Kenapa `\ d` lebih perlahan daripada` [0-9] `dalam C# regex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan