Сообщение от
^_^
Первый вариант -
недо"решение" неудобства с строками в Павн, нынче тренд среди
псевдо-прокодеров этого портала.
Ты всегда так лезешь с оскорблениями на всех, с кем не согласен?
Сообщение от
^_^
Позволяет перекидывать свою лень и недостаток знаний элементарной арифметики на компилятор, соответственно несущественно увеличивая время компиляции.
Сообщение от
^_^
(если конечно не умеем считать или лень это сделать)
Я умею считать, но я не обязан каждый раз напрягать зрение и внимательность, считая каждый символ, а потом запоминать каждый промежуточный вариант и что-то прибавлять-вычитать - и как бы ничего не упустить. Я могу, но я не собираюсь выполнять всю эту рутину, когда с ней вполне может справиться компилятор - для того он и создан, чтобы упростить жизнь программисту (Brainfuck и прочая ересь не в счёт).
Если считать размер массива вручную, легко ошибиться. При использовании sizeof и расчёту по формуле вероятность ошибки тоже есть, но благодаря компилятору, она куда меньше.
Вообще желание программиста упростить себе жизнь и перекинуть часть работы на компилятор (пусть даже жертвуя временем компиляции, но зато с повышением надёжности кода) вполне естественно в современных реалиях. Если бы программисты к этому не стремились, все бы до сих пор программировали на ассемблере.
Сообщение от
^_^
Этот вариант позволяет легко определить точную длину форматированной строки компенсируя это утратами глобальной памяти (экономим несколько байтов (если конечно не умеем считать или лень это сделать) в стеке и теряем в несколько раз больше байтов в секции данных = хороший профит
).
Пруфы? Или будешь и дальше голословно утверждать, что во втором варианте строка с форматными спецификаторами берётся из воздуха?
Btw, http://pro-pawn.ru/showthread.php?13208
Сообщение от
^_^
но и этого есть вторая сторона - при появлений нужды изменить/добавить/убрать определенный параметр в этой самой форматированной строки придется опять же в ручную вычитывать длину плейсхолдеров и сложить максимальную длину переменной.
Обычно мало когда приходится менять спецификаторы, чаще весь остальной текст. Сужу по собственному опыту, хоть и не самому большому.
Но даже если и нужно менять формулу при изменении форматной строки, то не всегда, а только когда изменяешь сами спецификаторы. Для сравнения: во втором варианте длину массива нужно пересчитывать во всех случаях изменения форматного текста.
И после этого вариант с формулой называют неудобным... >_>
Сообщение от
^_^
Второй вариант - не увеличивает время компиляции, не использует секцию данных, неудобный (по мнению некоторых), не принуждает к бесполезному идеализму.
К первому варианту тут тоже никто не принуждает, разве что могут порекомендовать.
Касаемо использования секции данных - см. ссылку выше.
Сообщение от
seriu
Не понимаю, зачем вы пытаетесь подражать DC.
Он делает так как ему нравится, так и вы делайте так как нравится вам.
Т.е. если кто-то использует способ, который ему удобнее, то он обязательно кому-то подражает? На какой планете вы живёте?
Сообщение от
Untonyst
Сообщение от
seriu
Обойдусь стандартной функцией GetTickCount()
"Уже есть готовые и проверенные решения, но я лучше изобрету свой велосипед."
Сообщение от
seriu
2й вариант лучше и быстрее
Открыть/закрыть
http://imgur.com/burPTx7
PHP код:
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
new time = GetTickCount();
for(new x = 0; x < 50000000; x++)
{
static const check_str [] = "Проверка %d";
new new_check [sizeof(check_str)];
format(new_check, sizeof(new_check), check_str, 22);
}
printf("static const %d",GetTickCount()-time);
new timex = GetTickCount();
for(new x = 0; x < 50000000; x++)
{
new new_check [11];
format(new_check,11,"Проверка %d", 22);
}
printf("new %d",GetTickCount()-timex);
print("----------------------------------\n");
}
Не задумывались, что будет, если во время теста начнёт работать антивирус или ещё что-то создаст дополнительную нагрузку и ухудшит результаты для одного из тестируемых отрывков кода?
Вы принимаете хоть какие-то меры для защиты от такого вмешательства? (конечно же, нет, вопрос был риторический)
Btw, во втором варианте размер массива посчитан неправильно. Ещё один "плюс" отказа от sizeof.
Всё остальное - см. здесь и здесь.
Всем, кому ответил выше: в следующий раз разберитесь, прежде чем пытаться кому-то что-то советовать.
Если вы сами не разбираетесь в том, о чём говорите, то не вешайте другим лапшу на уши.
Можете считать это своего рода криком души.
Уже два года приходится наблюдать, как некоторые, вроде бы, хорошо разбирающиеся в своём деле скриптеры отговаривают на просторах интернета других от подсчёта размера строк по формуле.
Выдумывают всякие небылицы про лишние строки в секции данных, лишние расчёты во время работы сервера, замедление работы компилятора.
Два. Грёбаных. Года. И за это время ни один из них не предоставил реальных доказательств.
Надеюсь, мой последний выпуск мифов о скриптинге разъяснит все вопросы и положит конец спорам.
Если нет - буду рад выслушать пожелания и конструктивную критику в свой адрес.
P.S.: Замечу, я не пытаюсь доказать превосходство одного из способов подсчёта над другим. Более того, я даже ни слова об этом не сказал - только опроверг утверждения других скриптеров в этой теме.
Как было подмечено выше, этот вопрос зависит от предпочтений каждого скриптера, а потому и утверждать об однозначном превосходстве одного метода над другим неправильно.
P.P.S.:
Сообщение от
ziggi
PHP код:
#define mathrandom(%0,%1) (random((%1) - (%0) + 1) + %0)
PHP код:
new a = 0, b = 9;
new r = mathrandom(a++, b++); // Получим двойной инкремент A.