Powiedzmy, że nazwałem replaceAll() na dużym łańcuchu, który zastąpił 1000 pasujących wystąpień. Czy to oznacza, że 1000 ciągów zostało utworzonych i ponownie przydzielonych w procesie z powodu niezmienności łańcucha? Czy są jakieś szybsze alternatywy?Czy wydajność string.replaceAll() cierpi na niezmienność łańcucha?
6
A
Odpowiedz
13
-1
można spróbować z StringBuffer/StringBuilder, ponieważ są one ZmienneCharSequence s:
CharSequence veryBigString = new StringBuilder();
Pattern.compile(regex).matcher(veryBigString).replaceAll(replacement);
+1
Nie ma znaczenia, czy 'bardzoBigString' jest zmienne; 'replaceAll()' nadal utworzy nowy StringBuffer do wykonania pracy i zwróci wynik jako nowy String. Czy to był twój punkt widzenia? –
Powiązane problemy
- 1. Java String.replaceAll regex
- 2. Visual Studio 2010 cierpi na schizofrenię
- 3. Pattern.DOTALL z String.replaceAll
- 4. Regex za pomocą Java String.replaceAll
- 5. Dlaczego ten program Rust ignoruje niezmienność
- 6. Niezmienność ciągów w CPython naruszone
- 7. Jak działa odbicie i niezmienność?
- 8. Regex do prostego przetasowania za pomocą String.replaceAll
- 9. W jakich sytuacjach zamrażanie obiektów WPF znacząco wpływa na wydajność?
- 10. Podział łańcucha na tablicę
- 11. Wpływ Console.Writeline na wydajność
- 12. Systemtap wpływ na wydajność
- 13. Dzielenie łańcucha na pary
- 14. indexOf na przestrzeni łańcucha
- 15. Cięcie łańcucha na litery
- 16. Wydajność Orchard na Azure
- 17. Firebase - czy buforowanie poprawia wydajność?
- 18. Czy C# wydajność odblokowuje blokadę?
- 19. Wydajność PostgreSQL na EC2/EBS
- 20. Wpływ metod wirtualnych na wydajność
- 21. Wydajność zapisu na karcie SD
- 22. Log.d i wpływ na wydajność
- 23. smallint vs int na wydajność
- 24. wydajność str w Pythonie
- 25. Czy można ustawić FolderBrowserDialog.RootFolder na dowolną ścieżkę z łańcucha?
- 26. Czy istnieje sposób na określenie nazwy tabeli jako łańcucha znaków?
- 27. Usuń wszystkie znaki interpunkcyjne od końca łańcucha
- 28. Czy przypięcie obiektu w LOH wpływa na wydajność GC?
- 29. Czy dodanie [Serializable] do klasy może mieć wpływ na wydajność?
- 30. Czy szyfrowanie RDS AWS z usługą KMS wpływa na wydajność?
pamiętać, że tworząc nowy wzór może być kosztowne. W zależności od tego, jak często jest on wywoływany, może być wydajniejsze tworzenie Wzorca i tworzenie Matchera. Profilowanie aplikacji zawsze będzie zawierało informacje, czy jest to konieczne, czy przedwczesna optymalizacja. – AngerClown