Итак, я работаю над сценарием Perl, который выполняет большую часть обработки (ничего сложного, но много ) и решил сделать небольшой тест для сравнения двух распространенных методов обрезки строк..
Первый метод - быстрый однострочный:
$word =~ s/^\s+|\s+$//g;
Второй метод немного длиннее, но делает то же самое:
$word =~ s/^\s+//;
$word =~ s/\s+$//;
Длямои тесты, у меня был сценарий, прочитанный из файла с 40 миллионами строк, обрезая каждую (ничего кроме этого не делает).Средняя длина строки составляет менее 20 байтов.
Первый метод занял в среднем 87 секунд.
Второй метод занял в среднем 27 секунд.
Без обработки (только чтение строки, продолжение) занимает в среднем 16 секунд.
Первый метод (первый проход) будет сопоставлять либо все начальные или конечные пробелы, затем удалять его, затем сопоставлять и удалять начальные / конечные пробелы на другой стороне.
Второй метод сопоставляет и удаляетвесь начальный пробел, затем сопоставляет и удаляет все конечные пробелы.
Возможно, я ошибаюсь, но почему второй метод будет в 3 раза быстрее первого?