 |
|

24.05.2010, 11:13
|
|
Участник форума
Регистрация: 07.09.2008
Сообщений: 139
С нами:
9302285
Репутация:
65
|
|
Сообщение от rudvil
Есть ли смысл для оптимизации, передавать аргументы функции через указатель, например
Код:
void show_msg(std::string& msg) {
std::cout << msg;
}
если учитывать что эта функция вызывается очень часто и с средним кол. символов в "msg" - 500
Т.е. насколько я понимаю если не передавать через указатель, то при каждом вызове будет происходить копия этого "msg" и последующий его вывод... что мне впринципе нафиг не надо, тогда уже лучше везде прописывать аргументы через ссылки.
Ну не везде, но во всяком случае там - где я точно знаю что в функ. с ним никаких операция кроме чтения не будет.
Есть ли смысл с этим заморачиваться?
на сколько я понимаю, тут выгоднее написать
Код:
inline void show_msg(std::string msg) {std::cout << msg;}
|
|
|

24.05.2010, 11:18
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами:
9320830
Репутация:
86
|
|
Сообщение от Byte_
на сколько я понимаю, тут выгоднее написать
Код:
inline void show_msg(std::string msg) {std::cout << msg;}
Да, спасибо это вариант, но ведь копирование аргумента по прежнему будет?
|
|
|

24.05.2010, 11:21
|
|
Участник форума
Регистрация: 07.09.2008
Сообщений: 139
С нами:
9302285
Репутация:
65
|
|
Сообщение от rudvil
Да, спасибо это вариант, но ведь копирование аргумента по прежнему будет?
если я правильно понимаю механизм inline функций в C, то нет... в такой функции тело заменяет вызов при компиляции. но следует учесть, что inline может быть не воспринят компилятором (это рекомендация а не условия для компилятора).
|
|
|

24.05.2010, 11:27
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами:
9320830
Репутация:
86
|
|
Сообщение от Byte_
если я правильно понимаю механизм inline функций в C, то нет... в такой функции тело заменяет вызов при компиляции. но следует учесть, что inline может быть не воспринят компилятором (это рекомендация а не условия для компилятора).
Хмм, ещё раз спасибо - попробую и так - и так, проведу пару тестов, посмотрим где компилятору(в плане оптимизации) больше понравится =]
|
|
|

24.05.2010, 11:39
|
|
Участник форума
Регистрация: 07.09.2008
Сообщений: 139
С нами:
9302285
Репутация:
65
|
|
Сообщение от rudvil
Хмм, ещё раз спасибо - попробую и так - и так, проведу пару тестов, посмотрим где компилятору(в плане оптимизации) больше понравится =]
напиши потом. заинтриговал =)
|
|
|

24.05.2010, 12:14
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами:
9320830
Репутация:
86
|
|
Сообщение от Byte_
напиши потом. заинтриговал =)
Забавно получилось, как говорится не знаешь не трогай ^^
результаты в мс.
Сообщение от без оптимизации
1174
752
751
752
748
1043
1024
781
752
751
Сообщение от через ссылку
925
750
753
748
756
774
746
770
759
750
Сообщение от заинлайненая
959
764
772
757
757
770
761
771
758
808
Вывод следующий - с такой мелкой оптимизации смысла нет заморачиваться, компилятор всё сделает за тебя.
|
|
|

24.05.2010, 12:43
|
|
Участник форума
Регистрация: 07.09.2008
Сообщений: 139
С нами:
9302285
Репутация:
65
|
|
rudvil, скорее всего он не воспринял inline из-за использования std...
судя по всему способ 1 = способу 3
|
|
|

24.05.2010, 12:49
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
С нами:
9320830
Репутация:
86
|
|
Сообщение от Byte_
rudvil, скорее всего он не воспринял inline из-за использования std...
судя по всему способ 1 = способу 3
Как бы там ни было если уж оптимизировать, то оптимизировать нужно скорее общий алгоритм программы, чем всякую мелочь =]
|
|
|

24.05.2010, 12:52
|
|
Новичок
Регистрация: 04.06.2009
Сообщений: 7
С нами:
8913594
Репутация:
0
|
|
подскажите как после очистки кэша IE
var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord; dwEntrySize: LongWord; dwLastError: LongWord; begin dwEntrySize := 0; FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); if (hCacheDir <> 0) then DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName ); FreeMem(lpEntryInfo); repeat dwEntrySize := 0; FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize); dwLastError := GetLastError(); if (GetLastError = ERROR_INSUFFICIENT_BUFFER) then begin GetMem(lpEntryInfo, dwEntrySize); if (FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) then DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName ); FreeMem(lpEntryInfo); end; until (dwLastError = ERROR_NO_MORE_ITEMS);
добавить в уже отчищенный кэш куки из edit1.text
|
|
|

24.05.2010, 13:59
|
|
Постоянный
Регистрация: 09.06.2005
Сообщений: 531
С нами:
11010660
Репутация:
439
|
|
чувак, это ж не с/с++. ты либо темой ошибся, либо языком.
cookie записываются в файл. для этого тебе надо знать содержание и место хранения cookies.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|