2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 190
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Если результат функции используется несколько раз то следует ее значение присвоить переменной и использовать переменную?26.10.2023, 21:14. Показов 548. Ответов 10
Метки нет (Все метки)
Если результат функции используется несколько раз, то следует ее значение присвоить переменной и использовать эту переменную?
Как целесообразнее? Пример 1
0
|
26.10.2023, 21:14 | |
Ответы с готовыми решениями:
10
В переменную povtor присвоить результат выполнения функции confirm, которая выводит фразу «Пройти заполнение еще раз?» Вычислить значение функции. В качестве параметров использовать переменную и константы, если они есть Переменной А присвоить ее значение, увеличенное в N раз, 2N раз, 3N раз Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет |
Модератор
3756 / 2260 / 782
Регистрация: 15.11.2015
Сообщений: 8,991
|
|
26.10.2023, 21:54 | 2 |
Вообще, да. Но конкретно с Length длина строки хранится в памяти, потому, просто считывается точно так же, как и из переменной. Т.е., с Length не имеет смысла.
0
|
541 / 241 / 27
Регистрация: 05.05.2022
Сообщений: 1,571
|
||||||
27.10.2023, 12:34 | 6 | |||||
Делал я как-то отчет в Excel из Interbase базы с набором в 220 тыс. что ли строк. Считалась там статистика типа среднекв. откл. Все это дело строилось за 17 сек. на тогдашнем P4-3000. И я не подумавши брал в каждом обращении данные через AsFloat и так 6 раз каждое. А потом мне понадобилось добавить еще 1 параметр и пришлось поменять процедурку так, что все эти AsFloat стали передаваться 1 раз при вызове. В результате несмотря на добавление еще 1 листа выводимого в Excel время выполнения упало до 14-15. Ну подумаешь всего-то лишний миллион обращений к методу TIBQuery.AsFloat.
0
|
541 / 241 / 27
Регистрация: 05.05.2022
Сообщений: 1,571
|
|
27.10.2023, 13:22 | 8 |
Нет, по индексу.
0
|
237 / 203 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
|
27.10.2023, 15:46 | 9 |
Если не предполагается, что результат функции может внезапно поменяться, то лучше использовать переменную. И отлаживать так проще.
0
|
2 / 2 / 0
Регистрация: 11.09.2023
Сообщений: 190
|
|||||||||||
06.11.2023, 09:09 [ТС] | 10 | ||||||||||
Выше у меня немного другие примеры были.
Встречаются еще вот такие варианты. Значение-резултат функции будет одинаков. В обоих вызовах. Вопрос в том, что мы получим результат функции GetLastModifiedFileDate в сравнении if в первом её вызове, а потом она снова будет вызвана в Result := GetLastModifiedFileDate(SubFolder, APattern), и снова например будет просматривать скажем вес диск C:? Или же каким то чудом компилятор поймет, что только что эта функция была вызвана с теми же параметрами и можно ее не запускать снова, а просто взять ранее полученное значение уже из памяти? Компилятор на такое способен или "тупо" как написно будет вызвана два раза процедура и она два раза будет просматривать содержимое директории SubFolder?
0
|
237 / 203 / 36
Регистрация: 19.02.2021
Сообщений: 1,431
|
||||||
06.11.2023, 10:46 | 11 | |||||
Нет, компилятор таким не занимается.
Оптимизация производится, если компилятор видит, что задействованные компоненты (параметры/данные) никак не зависят от каких-то внешних изменений. Т.е., выражение "2+3" компилятор заменит на "5" и "впишет" этот результат в бинарный код. Да, будет просматривать. Тем более, что это - файловая система, которая не зависит от вашей программы. Между вызовами этой функции там много чего может поменяться. Но в вашем примере лучше использовать переменную. Выражением
А иначе вы получите одно, а вернуть можете совсем другое.
0
|
06.11.2023, 10:46 | |
06.11.2023, 10:46 | |
Помогаю со студенческими работами здесь
11
Как использовать одну и ту же переменную несколько раз в одном коде Присвоить переменной результат отработки функции Возможно ли несколько раз использовать указатель на результат выполнения запроса? Присвоить логической переменной T значение true, если значение d-цифра, и значение false в противном случае а если присвоить переменной а значение переменной н,то если изменится в ходе исполнения программы н,а изменится? Написать программу, которая позволяет переменной a присвоить значение 0, если число четное, и 1, если — нечетное Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |