Воскресенье, 24 Ноября 2024, 19:13

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Снижение нагрузки ЦП.
RomaN72Дата: Воскресенье, 14 Июня 2015, 19:02 | Сообщение # 1
частый гость
Сейчас нет на сайте
У меня есть 8 переменных. Значение первой переменной генерируется случайно в диапазоне от 0 до 15.
Остальные значения генерируются по порядку до того момента, пока будут не равны предыдущим переменным.
Этот процесс очень сильно затормаживает работу. Игра не отвечает, как показывает диспетчер задач - нагрузка ЦП равна около 25 в этот момент.
Игра не отвечает после того момента , как происходит момент генерации.
Как уменьшить нагрузку?


OpenGOOДата: Воскресенье, 14 Июня 2015, 20:27 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
25% это даже не нагрузка. Где проблемный код?

Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
RomaN72Дата: Воскресенье, 14 Июня 2015, 20:53 | Сообщение # 3
частый гость
Сейчас нет на сайте
Код

Создание.
n_1=irandom_range(0,15)
n_2=irandom_range(0,15)
if n_2=n_1
{
while(n_2=n_1){n_2=irandom_range(0,15)}
}
n_3=irandom_range(0,15)
if n_3=n_1 or n_3=n_2
{
while(n_3=n_1 or n_3=n_2){n_3=irandom_range(0,15)}
}
n_4=irandom_range(0,15)
if n_4=n_1 or n_4=n_2 or n_4=n_3
{
while(n_4=n_1 or n_4=n_2 or n_4=n_3){n_4=irandom_range(0,15)}
}
n_5=irandom_range(0,15)
if n_5=n_1 or n_5=n_2 or n_5=n_3 or n_5=n_4
{
while(n_5=n_1 or n_5=n_2 or n_5=n_3 or n_5=n_4){n_5=irandom_range(0,15)}
}
n_6=irandom_range(0,15)
if n_6=n_1 or n_6=n_2 or n_6=n_3 or n_6=n_4 or n_6=n_5
{
while(n_6=n_1 or n_6=n_2 or n_6=n_3 or n_6=n_4 or n_6=n_5){n_6=irandom_range(0,15)}
}
n_7=irandom_range(0,15)
if n_7=n_1 or n_7=n_2 or n_7=n_3 or n_7=n_4 or n_7=n_5 or n_7=n_6
{
while(n_7=n_1 or n_7=n_2 or n_7=n_3 or n_7=n_4 or n_7=n_5 or n_7=n_6){n_7=irandom_range(0,15)}
}
n_8=irandom_range(0,15)
if n_8=n_1 or n_8=n_2 or n_8=n_3 or n_8=n_4 or n_8=n_5 or n_8=n_6 or n_8=n_7
{
while(n_8=n_1 or n_8=n_2 or n_8=n_3 or n_8=n_4 or n_8=n_5 or n_8=n_6 or n_8=n_7){n_8=irandom_range(0,15)}
}


TymonrДата: Воскресенье, 14 Июня 2015, 20:55 | Сообщение # 4
With OpenSource forever
Сейчас нет на сайте
RomaN72, лол. Король оптимизации:DD

Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах
QvantДата: Воскресенье, 14 Июня 2015, 21:16 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Код
n_1=irandom_range(0,15) ;
n_2=n_1 ;
n_3=n_1 ;
n_4=n_1 ;
n_5=n_1 ;  
n_6=n_1 ;
n_7=n_1 ;
n_8=n_1 ;


tongue
OpenGOOДата: Воскресенье, 14 Июня 2015, 22:10 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
RomaN72, не похоже чтобы проблема была именно в этом месте.

Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
YellowAfterlifeДата: Воскресенье, 14 Июня 2015, 22:25 | Сообщение # 7
Сейчас нет на сайте
Создать список, занести значения, перемешать список, достать первые 8 значений:
var list;
list = ds_list_create()
for (var i = 0; i < 16; i += 1) ds_list_add(list, i)
ds_list_shuffle(list)
n_1 = ds_list_find_value(list, 0)
n_2 = ds_list_find_value(list, 1)
n_3 = ds_list_find_value(list, 2)
n_4 = ds_list_find_value(list, 3)
n_5 = ds_list_find_value(list, 4)
n_6 = ds_list_find_value(list, 5)
n_7 = ds_list_find_value(list, 6)
n_8 = ds_list_find_value(list, 7)
n_1 = ds_list_find_value(list, 0)
ds_list_destroy(list)

Но проблема правда вряд ли в этой части - даже для 8-ого значения шанс того что оно совпадет с каким-либо из предыдущих будет 1/2.


OpenGOOДата: Понедельник, 15 Июня 2015, 00:47 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Не сильно тестировал
Код
/// scr_shuffle(array)
var items = argument0;
var i = array_length_1d(items);
while (i > 1)
      {
      --i;
      var j = irandom(i);
      var tmp = items[j];
      items[@ j] = items[i];
      items[@ i] = tmp;
      }


Пример
Код
var array = undefined;
array[15] = 0;
var i = 0;
repeat(16)
     {
     array[i] = i;
     ++i;
     }
// Перемешать массив чисел     
scr_shuffle(array);


Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]


Сообщение отредактировал OpenGOO - Понедельник, 15 Июня 2015, 00:50
XDominatorДата: Понедельник, 15 Июня 2015, 13:30 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Цитата OpenGOO ()
25% это даже не нагрузка.


Очень даже нагрузка, если проц 4-хъядерный smile


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
PoidetLiДата: Понедельник, 15 Июня 2015, 17:31 | Сообщение # 10
участник
Сейчас нет на сайте
Цитата Qvant ()
n_1=irandom_range(0,15) ;
n_2=n_1 ;
n_3=n_1 ;
n_4=n_1 ;
n_5=n_1 ;
n_6=n_1 ;
n_7=n_1 ;
n_8=n_1 ;

ему нужно наоборот, что бы n1...n8!=n1...n8

Добавлено (15 июня 2015, 17:31)
---------------------------------------------

Цитата RomaN72 ()
Код

Создание.
n_1=irandom_range(0,15)
n_2=irandom_range(0,15)
if n_2=n_1
{
while(n_2=n_1){n_2=irandom_range(0,15)}
}
n_3=irandom_range(0,15)
if n_3=n_1 or n_3=n_2
{
while(n_3=n_1 or n_3=n_2){n_3=irandom_range(0,15)}
}
n_4=irandom_range(0,15)
if n_4=n_1 or n_4=n_2 or n_4=n_3
{
while(n_4=n_1 or n_4=n_2 or n_4=n_3){n_4=irandom_range(0,15)}
}
n_5=irandom_range(0,15)
if n_5=n_1 or n_5=n_2 or n_5=n_3 or n_5=n_4
{
while(n_5=n_1 or n_5=n_2 or n_5=n_3 or n_5=n_4){n_5=irandom_range(0,15)}
}
n_6=irandom_range(0,15)
if n_6=n_1 or n_6=n_2 or n_6=n_3 or n_6=n_4 or n_6=n_5
{
while(n_6=n_1 or n_6=n_2 or n_6=n_3 or n_6=n_4 or n_6=n_5){n_6=irandom_range(0,15)}
}
n_7=irandom_range(0,15)
if n_7=n_1 or n_7=n_2 or n_7=n_3 or n_7=n_4 or n_7=n_5 or n_7=n_6
{
while(n_7=n_1 or n_7=n_2 or n_7=n_3 or n_7=n_4 or n_7=n_5 or n_7=n_6){n_7=irandom_range(0,15)}
}
n_8=irandom_range(0,15)
if n_8=n_1 or n_8=n_2 or n_8=n_3 or n_8=n_4 or n_8=n_5 or n_8=n_6 or n_8=n_7
{
while(n_8=n_1 or n_8=n_2 or n_8=n_3 or n_8=n_4 or n_8=n_5 or n_8=n_6 or n_8=n_7){n_8=irandom_range(0,15)}
}

тут у тебя наоборот будет генироватся, пока не будут равны


в еюдуго прсхлуренц
http://gcup.ru/forum/9-44187-1 мой Project 96
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг