Есть ли смысл для оптимизации, передавать аргументы функции через указатель, например Code: void show_msg(std::string& msg) { std::cout << msg; } если учитывать что эта функция вызывается очень часто и с средним кол. символов в "msg" - 500 Т.е. насколько я понимаю если не передавать через указатель, то при каждом вызове будет происходить копия этого "msg" и последующий его вывод... что мне впринципе нафиг не надо, тогда уже лучше везде прописывать аргументы через ссылки. Ну не везде, но во всяком случае там - где я точно знаю что в функ. с ним никаких операция кроме чтения не будет. Есть ли смысл с этим заморачиваться?
на сколько я понимаю, тут выгоднее написать Code: inline void show_msg(std::string msg) {std::cout << msg;}
если я правильно понимаю механизм inline функций в C, то нет... в такой функции тело заменяет вызов при компиляции. но следует учесть, что inline может быть не воспринят компилятором (это рекомендация а не условия для компилятора).
Хмм, ещё раз спасибо - попробую и так - и так, проведу пару тестов, посмотрим где компилятору(в плане оптимизации) больше понравится =]
Забавно получилось, как говорится не знаешь не трогай ^^ результаты в мс. Вывод следующий - с такой мелкой оптимизации смысла нет заморачиваться, компилятор всё сделает за тебя.
rudvil, скорее всего он не воспринял inline из-за использования std... судя по всему способ 1 = способу 3
Как бы там ни было если уж оптимизировать, то оптимизировать нужно скорее общий алгоритм программы, чем всякую мелочь =]
чувак, это ж не с/с++. ты либо темой ошибся, либо языком. cookie записываются в файл. для этого тебе надо знать содержание и место хранения cookies.
Инлайн-подставка применяется к очень маленьким функциям. При использовании инлайн-подставки компилятор будет генеририровать для функции соответствующий код в месте ее вызова. Это увеличит скорость вызова функции, но не избавит от затрат на копирование. Что-то новое...
Ну,например,есть переменная: int one = 1000; Как вывести,скажем, 2 член? Было бы это char, то cout << one[2];
Возможно вы имели в виду получение доступа к N'ому элементу массива? Тогда проще быть не может: int arrayNumbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; На пример получить доступ к первому элементу массива можно следующим образом: arrayNumbers[ 0 ]; 0 - потому что массив индексируются начиная с нуля. UPD: Code: int var = 1000; int var1 = var % 10; // Это последнее число - 0. int var2 = var % 100; // предпоследнее - 0. int var3 = var % 1000; // второе - 0. int var4 = var % 10000; // первое - 1. Но это изврат ,)
M_script_ отнюдь не выгоднее, и банально неправильно. это си стайл. не юзают с плюсами. правильно юзать инлайн меотды.