Снижение нагрузки ЦП.
|
|
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 ;
|
|
| |
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-хъядерный
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
|
|
| |