ЗАКРЫТЬ
Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Новости

30-дек
29-дек
26-дек
15-дек

4 страниц V  « 2 3 4

Программирование для начинающих

Статус пользователя Mart1337
сообщение 17.12.2014, 12:17
Сообщение #41


Стаж: 2 года 6 месяцев

Сообщений: 34
Благодарностей: 14
Полезность: 8

4+1=5
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя FeNix41
сообщение 17.12.2014, 12:21
Сообщение #42
Стаж: 2 года 11 месяцев

Сообщений: 58
Благодарностей: 2
Полезность: < 0

Mart1337, понял :)
Математики в недоумении :)

Отредактировал: FeNix41, - 17.12.2014, 12:21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя FeNix41
сообщение 17.12.2014, 13:06
Сообщение #43
Стаж: 2 года 11 месяцев

Сообщений: 58
Благодарностей: 2
Полезность: < 0

А второй части нету?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Dukkhaz0r
сообщение 17.12.2014, 14:46
Сообщение #44


Стаж: 3 года 1 месяц

Сообщений: 340
Благодарностей: 289
Полезность: 803

Ты перезаписываешь переменную, все просто.
Если переменная была бы static, можно было бы еще напрячься:-)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mertka4
сообщение 20.1.2015, 14:36
Сообщение #45


Стаж: 3 года

Сообщений: 267
Благодарностей: 128
Полезность: 193

ребят подскажите что за беда, есть исходник .sma когда его например компилирую локально под названием test.sma он компилируется без проблем, а когда компилирую под названием test1.sma с точно таким же кодом то он не компилируется, выдает ошибку в 1 строке хотя там нет никакой ошибки. что такое?


Интернет - как жизнь, смысла нет, а уходить не хочется..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 20.1.2015, 14:38
Сообщение #46


Иконка группы

Стаж: 3 года 3 месяца

Сообщений: 15545
Благодарностей: 6930
Полезность: 1206

mertka4, может просто test1.sma сохраняешь в UTF-8 с BOM? Ошибку бы увидеть.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mertka4
сообщение 20.1.2015, 14:44
Сообщение #47


Стаж: 3 года

Сообщений: 267
Благодарностей: 128
Полезность: 193

Bloo, кодировка точно такая же UTF-8 без BOM
Скрин
Прикрепленное изображение


Интернет - как жизнь, смысла нет, а уходить не хочется..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 20.1.2015, 14:45
Сообщение #48


Иконка группы

Стаж: 3 года 3 месяца

Сообщений: 15545
Благодарностей: 6930
Полезность: 1206

mertka4, кинь оба файла
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя mertka4
сообщение 20.1.2015, 14:49
Сообщение #49


Стаж: 3 года

Сообщений: 267
Благодарностей: 128
Полезность: 193

Bloo, скинул в ЛС


Интернет - как жизнь, смысла нет, а уходить не хочется..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя adva
сообщение 15.4.2015, 19:54
Сообщение #50


Иконка группы

Стаж: 3 года 10 месяцев

Сообщений: 1388
Благодарностей: 631
Полезность: 945

Меценат Меценат

Код:
	{
for(i = 1; i <= g_iMaxPlayers; i++)
{
g_iDamage[i] = 0
g_iKills[i] = 0
}

return
}


ребят тут есть ошибка?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 15.4.2015, 20:37
Сообщение #51


Стаж: 4 года 7 месяцев

Сообщений: 218
Благодарностей: 254
Полезность: 986

adva, ошибки нет, но можно сделать так:
Код:
arrayset(g_iDamage/*Название массива*/, false/*Устанавливаемое значение, в данном случае 0*/, 33/*Размер ячейки*/);
arrayset(g_iKills, false, 33);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sanlerus
сообщение 15.4.2015, 20:43
Сообщение #52


Стаж: 3 года 3 месяца

Сообщений: 132
Благодарностей: 70
Полезность: 34

Цитата(Stimul1 @ 15.4.2015, 23:37) *
adva, ошибки нет, но можно сделать так:
Код:
arrayset(g_iDamage/*Название массива*/, false/*Устанавливаемое значение, в данном случае 0*/, 33/*Размер ячейки*/);
arrayset(g_iKills, false, 33);

Два цикла вместо одного? Да вы мастер оптимизаций)

Цитата(Stimul1 @ 15.4.2015, 23:37) *
*Размер ячейки*/

Мб размер массива?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Stimul1
сообщение 15.4.2015, 20:54
Сообщение #53


Стаж: 4 года 7 месяцев

Сообщений: 218
Благодарностей: 254
Полезность: 986

Sanlerus, ну так 2 цикла на С.
Ага, массива.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sanlerus
сообщение 15.4.2015, 21:04
Сообщение #54


Стаж: 3 года 3 месяца

Сообщений: 132
Благодарностей: 70
Полезность: 34

Цитата(Stimul1 @ 15.4.2015, 23:54) *
Sanlerus, ну так 2 цикла на С.
Ага, массива.

И что? Разницы не меняет, хоть си хоть не си.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 15.4.2015, 21:16
Сообщение #55
Стаж: 4 года 8 месяцев

Сообщений: 1504
Благодарностей: 982
Полезность: 710

Можно и так:
Код:
	#emit CONST.ALT g_iDamage
#emit CONST.PRI 0
#emit FILL 132

#emit CONST.ALT g_iKills
#emit CONST.PRI 0
#emit FILL 132
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 15.4.2015, 21:27
Сообщение #56
Стаж: 4 года 8 месяцев

Сообщений: 1504
Благодарностей: 982
Полезность: 710

Замерил кстати по скорости выполнения:
Код
AmxAsm 22 (FILL)
Native 43 (arrayset)
Code 348 (for)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Sanlerus
сообщение 15.4.2015, 21:45
Сообщение #57


Стаж: 3 года 3 месяца

Сообщений: 132
Благодарностей: 70
Полезность: 34

Код:
static cell AMX_NATIVE_CALL arrayset(AMX *amx, cell *params)
{
cell value = params[2];
if (!value)
{
memset(get_amxaddr(amx, params[1]), 0, params[3] * sizeof(cell));
} else {
int size = params[3];
cell *addr = get_amxaddr(amx, params[1]);
for (int i=0; i<size; i++)
{
addr[i] = value;
}
}
return 1;
}

Да быть не может чтобы эта хрень меньше жрала.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 15.4.2015, 21:56
Сообщение #58
Стаж: 3 года 2 месяца

Сообщений: 454
Благодарностей: 417
Полезность: 330

Еще как может, в Вашем случае попадаем в !value и идет вызов memset, а это быстрее чем 32 разрядный виртуальный код. Если бы разницы не было, то и функции бы не существовало. Чем больше элементов в массиве, тем больше будет выигрыш.

Сразу ответ на предполагаемый вопрос почему memset быстрее: Потому что там используются всякие ухищрения групповых ассемблерных операций.

Отредактировал: Radius, - 15.4.2015, 22:03
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 15.4.2015, 22:12
Сообщение #59
Стаж: 3 года 3 месяца

Сообщений: 4024
Благодарностей: 3504
Полезность: 715

Ну как это не может, вы же в коде цикл делаете, а модульные функции в десяток раз шустрее. Вот и выходит что цикл по игрокам медленнее чем вызов get_players к примеру


Сборки с фиксами от всех подмен, включая новую.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sanlerus
сообщение 15.4.2015, 22:12
Сообщение #60


Стаж: 3 года 3 месяца

Сообщений: 132
Благодарностей: 70
Полезность: 34

Цитата(Radius @ 16.4.2015, 0:56) *
Еще как может, в Вашем случае попадаем в !value и идет вызов memset, а это быстрее чем 32 разрядный виртуальный код. Если бы разницы не было, то и функции бы не существовало. Чем больше элементов в массиве, тем больше будет выигрыш.

Сразу ответ на предполагаемый вопрос почему memset быстрее: Потому что там используются всякие ухищрения групповых ассемблерных операций.

Это понятно, что на счёт обычного цикла который там.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
4 страниц V  « 2 3 4
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: