W Javie, co szybciej-string.contains ("jakiś tekst") lub regex, który szuka tego samego tekstu?


Jak mówi tytuł, szukam tylko ciągu pasującego do klienta kończącego wysyłanie danych przez gniazdo, więc mogę wyszukać coś takiego jak
{"Message": "END"}
w JSON na przykład string.
A najdłuższe ciągi będą miały kilkaset znaków.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wypróbowałem oba podejścia i powtórzyłem je ponad 100k razy, a String.contains () jest znacznie szybszy niż Regex.
Jednak String.Contains () jest przydatna tylko do sprawdzania istnienia dokładnego podciągu, podczas gdy Regex pozwala na więcej cudów. Więc wszystko zależy.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oboje są wystarczająco szybcy, aby skończyć, zanim się zorientujesz. Lepiej wybrać taki, który będzie łatwiejszy do przeczytania.
Ale z forów i blogów
zawiera
jest szybszy, ale wciąż pomijalna różnica w wydajności
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz to sprawdzić samodzielnie, tworząc benchmark z

Platforma Caliper o otwartym kodzie źródłowym firmy Google
https://code.google.com/p/caliper/
kod
Więcej na temat

Fakt, że mikrobenka jest, czytaj tutaj.
https://code.google.com/p/cali ... marks
Szczegółowy przykład
http://codingjunkie.net/micro- ... iper/
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Z tego

jak używać metody regex w String.contains () w Javie
https://coderoad.ru/15130309/
String.contains
>
String.contains
działa z ciągiem znaków, kropką. To nie działa z wyrażeniem regularnym. Sprawdza, czy dokładnie określona linia pojawia się w bieżącej linii, czy nie.
Zauważ, że
String.contains
nie sprawdza granic słów; po prostu sprawdza podciąg.


Jego wydajność jest dobra, zajmie ułamek sekundy mniej niż Regex.

Rozwiązanie Regex
>
Regex jest potężniejszy niż
String.contains
, ponieważ możesz zastosować granicę słów do słów kluczowych (między innymi). Oznacza to, że możesz wyszukiwać słowa kluczowe, takie jak

słowa
, nie tylko

podciągi

.


W ten sposób przeanalizowanie całego wiersza wymaga więcej czasu wykonania.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się