Быстрый; Правильно ли я полагаю, что передача строки методу "как CONST" требует большего количества накладных расходов, чем передача строки как "VAR"? Компилятор получит Delphi, чтобы сделать копию строки, а затем передать копию, если строковый параметр объявлен как CONST, правильно?
Причина вопроса немного утомительна; у нас есть утилита Delphi 5, чьи дни действительно пронумерованы (замена находится в разработке). Он выполняет большую обработку строк, часто передавая строки 1-2Kb между различными функциями и процедурами. На протяжении всего кода соблюдалось "правильное" наблюдение за использованием CONST или VAR для передачи параметров (в зависимости от выполняемой работы). Мы просто ищем несколько "быстрых побед", которые могут сбрить несколько микросекунд от времени выполнения, чтобы выдержать нас до тех пор, пока новая версия не будет готова. Мы подумали об изменении диспетчера памяти по умолчанию от Delphi 5 до FastMM, и мы также задались вопросом, стоит ли изменять способ передачи строк - потому что код работает нормально с строками, переданными как const, мы не см. проблему, если мы изменили эти объявления на var - код внутри этого метода не изменит строку.
Но действительно ли это имеет значение в реальных условиях? (Программа действительно просто выполняет большую обработку на этих строках 1kb + ish, несколько сотен строк в минуту в разное время). При повторной записи эти строки хранятся в переменных объектов/классов, поэтому их вообще не копируют и не пропускают одинаково, но в устаревшем коде это очень "старая школа".
Естественно, мы проанализируем общий прогон программы, чтобы увидеть, какую разницу мы сделали, но нет смысла на самом деле пытаться это, если мы категорически ошибаемся в отношении того, как работает строка в первом экземпляре!