Perl действительно хорош для написания программ разбора строк / файлов, которые мне обычно нужно делать. Что мне действительно нравится, так это то, что я пишу быстрые сценарии и одноразовый код по сравнению с C / C ++ / JAVA. Тем не менее, я хочу узнать, как ускорить процесс.
Например, я хотел бы узнать, как давать подсказки Perl, чтобы он мог принимать некоторые решения лучше - особенно вещи, связанные со строками. Мне кажется, что Perl копирует строку всякий раз, когда вы что-то делаете, независимо от того, действительно ли вы позже измените копию или нет. Это из-за замысла (и я могу отвергнуть это с помощью какой-нибудь магии?) Или я ругаю?
Я действительно хочу рассматривать некоторые строки как (const char *
). Я уверен, что нам всегда не нужно, чтобы все было std :: string со всем задействованным багажом (предположим, что std :: string аналогична строке Perl). Могу ли я дать подсказку Perl, чтобы сделать это на некоторых строках?
Я помню, как читал в какой-то статье (пожалуйста, прокомментируйте, если вы можете ее разместить), что вы можете намекнуть Perl, что вы не будете изменять какую-то переменную, и, таким образом, он удаляет дополнительный багаж, который в противном случае требуется, если вы его изменили, и т. Д. .
Я считаю, что переменные Perl имеют два внутренних указателя на одну и ту же переменную Perl - один может хранить число, а другой - строку (массив символов). Могу ли я всегда сказать Perl, чтобы выбрать один из всех? Могу ли я заставить Perl обрабатывать некоторые строки как (const char *)
, чтобы они не помечали функциональность, необходимую для их изменения?
Например, я где-то читал (может быть, в той же статье?), Что unpack () быстрее, чем substr (), потому что substr () возвращает lvalue, так что вы также можете работать с ним. Например, если я хочу заменить первые два символа строки на 'ef', я могу написать:
substr(string, 0, 2) = 'ef'; # string now begins with 'ef'
Следовательно, если я не использую эту особенность функции substr (), мне лучше использовать substr?
Я только что разглагольствовал?