Почему Switch очень сильно грузит комп?

ProxyBalance

Client
Регистрация
24.08.2015
Сообщения
19
Благодарностей
1
Баллы
3
В свиче 76 условий, при выполнении поиска сопоставлений оператива грузится до 900 метров, проц до 40 процентов. Как с этим бороться?
 

Ribas

Client
Регистрация
31.05.2014
Сообщения
1 380
Благодарностей
467
Баллы
83
Фигасе у вас свич, а можно скрин, так, глянуть просто? :-)
ps Мне кажется на шарпе будет быстрее работать
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
В свиче 76 условий, при выполнении поиска сопоставлений оператива грузится до 900 метров, проц до 40 процентов. Как с этим бороться?
76 разных веток, или все 76 в однин экшен идут?
 

ProxyBalance

Client
Регистрация
24.08.2015
Сообщения
19
Благодарностей
1
Баллы
3
Фигасе у вас свич, а можно скрин, так, глянуть просто? :-)
ps Мне кажется на шарпе будет быстрее работать
http://saveimg.ru/show-image.php?id=ea26a35b43777fc0cb62371426bf5522

76 разных веток, или все 76 в однин экшен идут?
не понял вопроса, в силу малых знаний зенки, но думаю на скрине видно)
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
)))) ничё свитч, у меня неотображается что именно там, но суть я так понял что с 10 веток это можно в одном кубике сделать
 

ProxyBalance

Client
Регистрация
24.08.2015
Сообщения
19
Благодарностей
1
Баллы
3
есть много условий, будет еще больше) но смысл в том что при некоторых разных условиях, нужно выполнять одинаковые блоки, как оптимизировать? не понимаю)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
есть много условий, будет еще больше) но смысл в том что при некоторых разных условиях, нужно выполнять одинаковые блоки, как оптимизировать? не понимаю)
то что их много это ни говорит что дом значит строить многоэтажный, я вижу что первые веток штук 15 идут в один кубик, так это можно в одном кубике сделать
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Охренительный switch:D У меня когда-то в одном проекте было всего штук 7 проверок и то напрягал размер этого "прямоугольника", сделал в коде.
А у вас не удивительно, что ресурсы жрет, не говоря уже о размерах. Естественно, нужно переписать в C#. Срочно:-) Будет !маленький кубик switch и, скорее всего, несколько Ifов.
Какой экшен стоит перед перед ним и что сравнивает switch?
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
думаю поймёшь что к чему, вместо a, b, c, d - свои значения с чем сравниваешь, если нет такого значения то по зелённой
Код:
string sss = project.Variables["sss"].Value; // переменная свитча
  if(sss == "a")  throw new Exception("не найдено");
  if(sss == "b")  throw new Exception("не найдено");
  if(sss == "c")  throw new Exception("не найдено");
  if(sss == "d")  throw new Exception("не найдено");
 
  • Спасибо
Реакции: chutev

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
796
Баллы
113
Исключения не надо просто так кидать, это сравнительно медленная операция, лучше просто null возвращать.
А так - да, проще было в коде написать здоровенный свитч, возвращающий пять значений, а после него уже мини-блок поставить, который только их обрабатывает
 

ProxyBalance

Client
Регистрация
24.08.2015
Сообщения
19
Благодарностей
1
Баллы
3
Какой экшен стоит перед перед ним и что сравнивает switch?
Свитч сравнивает значение переменной со своими значениями

думаю поймёшь что к чему, вместо a, b, c, d - свои значения с чем сравниваешь, если нет такого значения то по зелённой
Код:
string sss = project.Variables["sss"].Value; // переменная свитча
  if(sss == "a")  throw new Exception("не найдено");
  if(sss == "b")  throw new Exception("не найдено");
  if(sss == "c")  throw new Exception("не найдено");
  if(sss == "d")  throw new Exception("не найдено");
http://saveimg.ru/show-image.php?id=425d8ed7492146acac7df811b3e76095

Не могу понять, так? Так даже если не такого значения, то уходит по красной.

Я правильно понимаю что на каждые одинаковые действия нужно сделать такой блок с кодом?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
для каждого ненадо, допустим первые 15 веток идут в один экшен, тут прописываете 15 сравнений которые записаны в свитче, при нахождении этого значения уходит по красной, если такого значения нет то по зелённой и делаешь такой же экшен для других значений, допустим 76 условий выходят в 5-ть экшенов разных, у тебя получится 5 таких экшенов и в них сравнения, как ник написал, можешь и null поставить, но для 15 сравнений не вижу что он долго думает
P.S. ну допустим пример такой, будем исходить примера так как ты всё затираешь, у тебя значения, a, b, c, d, e и т.д., перед свитчем ты что то парсишь, какая то переменная, в этом коде она project.Variables["твоя переменая"].Value, а то что в ковычках тебе туда надо прописать значения
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
заменяем твой свитч
2015-09-01_145818.png
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
можешь и так, и если в переменной sss нет a, b, c или d то выходит по зелённой
Код:
string sss = project.Variables["sss"].Value; // твоя переменная свитча
  if(sss == "a") return null;
  if(sss == "b") return null;
  if(sss == "c") return null;
  if(sss == "d") return null;
тут наоборот, по красной положительный ответ, значит нашли такое значение
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
Да изначально неверный подход... тем более если будет расти... или сразу бить на отдельные проекты или же есть возможность вложенных - а так еще чуть чуть и оно встанет :-)
Лучше сейчас переделай по человечески...
 
  • Спасибо
Реакции: VladZen

ProxyBalance

Client
Регистрация
24.08.2015
Сообщения
19
Благодарностей
1
Баллы
3
Да изначально неверный подход... тем более если будет расти... или сразу бить на отдельные проекты или же есть возможность вложенных - а так еще чуть чуть и оно встанет :-)
Лучше сейчас переделай по человечески...
Изначально их и было много)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
даже без кода на несколько IF можно заменить
Там же можно внутри несколько сравнений делать "{-Variable.var-}" == "one" || "{-Variable.var-}" == "two"
 
  • Спасибо
Реакции: ProGramMoS

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 233
Благодарностей
5 844
Баллы
113
76 условий - это как-то все-таки многовато, даже просто с точки зрения логики. Что вы хотите сделать в шаблоне? проверять, совпадает ли значение переменной со значениями в списке?
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113

chutev

Client
Регистрация
23.01.2016
Сообщения
111
Благодарностей
15
Баллы
18
думаю поймёшь что к чему, вместо a, b, c, d - свои значения с чем сравниваешь, если нет такого значения то по зелённой
string sss = project.Variables["sss"].Value; // переменная свитча
if(sss == "a") throw new Exception("не найдено"); тогда меняем значение переменной "ххх" на "..."



Помогите, люди добрые! Допишите, пожалуйста, на С то что я синим дописал. Очень надо.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Помогите, люди добрые! Допишите, пожалуйста, на С то что я синим дописал. Очень надо.
C#:
string sss = project.Variables["sss"].Value; // переменная свитча
if (sss == "a")
    project.Variables["xxx"].Value = "...";
    throw new Exception("Не найдено!");
или
C#:
string sss = project.Variables["sss"].Value; // переменная свитча
if (sss == "a")
    project.Variables["xxx"].Value = "...";
    return null;
 
  • Спасибо
Реакции: chutev

chutev

Client
Регистрация
23.01.2016
Сообщения
111
Благодарностей
15
Баллы
18
Не пойму...
в коде:
вместо a - свои значения с чем сравниваешь, если нет такого значения то по зелённой
string sss = project.Variables["sss"].Value; // переменная свитча
if(sss == "a") throw new Exception("не найдено");

все работает как написано. Если не нашел значение "а" то идет по зеленой.

А в этой версии:
string sss = project.Variables["sss"].Value; // переменная свитча
if (sss == "a")
project.Variables["xxx"].Value = "...";
throw new Exception("Не найдено!");

Нашел или не нашел значение "а" все равно идет по красной.
Надо, что бы, как в первой версии, если не нашел "а" шел по зеленой, если нашел "а" устанавливал значение переменной и шел по красной. Поправьте, пожалуйста.
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
ну так установи сам если не то
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Надо, что бы, как в первой версии, если не нашел "а" шел по зеленой, если нашел "а" устанавливал значение переменной и шел по красной. Поправьте, пожалуйста.
C#:
string sss = project.Variables["sss"].Value;
if (sss == "a")
{
    project.Variables["xxx"].Value = "...";
    throw new Exception("Не найдено!");
}
или
C#:
string sss = project.Variables["sss"].Value;
if (sss != "a") return "ok";
project.Variables["xxx"].Value = "...";
throw new Exception("Не найдено!");
 
  • Спасибо
Реакции: chutev

BaronArtem

Новичок
Регистрация
28.06.2016
Сообщения
26
Благодарностей
0
Баллы
1

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с BaronArtem какие-либо сделки.

900 метров оперативы это много?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 233
Благодарностей
5 844
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)