Cóż, pierwszy będzie zdecydowanie szybciej. Rozwiązywanie zakamuflowanego, bardzo specyficznego problemu prawie zawsze przebiega o wiele szybciej, niż przekazywanie określonego rozwiązania do rutynowych czynności rozwiązywania problemów ogólnych. Jeśli chodzi o "znacznie" szybciej, dlaczego go nie przetestujesz? Uruchom obie wersje w pętli 10 milionów razy i użyj TStopwatch
(lub czegoś innego, jeśli nie masz D2010 lub nowszego), aby to zrobić.
Jedna rzecz: pierwsza jest zdecydowanie szybsza, ale może być również błędna. Jeśli nie zostanie zagwarantowane, że length(TestString)
ma wartość> = 2, może wystąpić tutaj warunek błędu. Jeśli TestString
jest pustym łańcuchem, spowoduje to zgłoszenie wyjątku. Jeśli nie, możesz uzyskać wyjątek lub nie, w zależności od ustawień kompilatora.
Ewaluacja od lewej do prawej strony nie jest wymagane do pierwszej metody. Możesz go najpierw dostosować, aby odfiltrować najmniej częste wystąpienia. Na przykład możesz najpierw przetestować znak zapytania, jeśli jest on rzadszy. –