Переделать код

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
В VS в-среднем скорость выполнения составляет 6900 против 7500 в PM.
смешно об этом говорить, а если я за мепьшее сделаю чем студия ты 10к бваксосов выложишь ????
Конечно нет. Я взял 2 одинаковых кода и протестил. Можешь сам тот же код запихнуть в студию и там протестить, только вывод на консоль замутить не забудь.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
у меня есть код по обработке изображения 5-тью методами. и они всегда по разному выдают, конечно unsafe и marchal лидирует в +100500 секунд, но вроемя ни когда не молжет быть одинаковым
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
у меня есть код по обработке изображения 5-тью методами. и они всегда по разному выдают, конечно unsafe и marchal лидирует в +100500 секунд, но вроемя ни когда не молжет быть одинаковым
Так я говорю о 2 абсолютно одинаковых кодах, которые тестятся в зенке и в студии. Судя по разнице в скорости, сам кубик обернут в try catch, из-за этого скорость в зенке ниже. Тем более стоит только создать вручную другой поток в PM и получить в нем исключение, как он сразу падает.
 

ssXXXss

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

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113

ssXXXss

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

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
где? в общем или в кубике
в кубике, там если ошибка в потоке возникает, то сразу проект мейкер ложится, так как обработка исключений не работает на новые созданные потоки
 

ssXXXss

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

ssXXXss

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

ssXXXss

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

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
ты пишишь про красивый код тут, читабельность и сейчас пишишь что это у тебя в одном кубе, я раньше тоже писал в кубе одном что проснувшись не помнил что к чему ))
попробуй кшласс создать или через делегат
Это чисто тест работы многопоточности с каждой вкладкой в одном инстансе был, а так пока ещё не разворачивал многопоточность в зенке с одним инстансом. Ну а классы можно использовать в зенке конечно, но там так неудобно работать в них, что все желание пропадает. А вот делегаты ещё можно применять.
а по чему при try catch падает, что даже оповещение ошибки не выдаёт ???
Так кубик из себя автоматически представляет уже обертку в try catch, но когда создается новый поток в нем, то try catch на него уже не действует, надо его вручную в другом потоке прописывать.
 

ssXXXss

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

Так кубик из себя автоматически представляет уже обертку в try catch, но когда создается новый поток в нем, то try catch на него уже не действует, надо его вручную в другом потоке прописывать.
да брось. всмысле при создании потока try catch не работает. ты ничего не путаешь
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
да брось. всмысле при создании потока try catch не работает. ты ничего не путаешь
Можешь сам протестить:
Код:
try
{
for (byte p = 0; p < 3; p++)
{
Thread thread = new Thread(new ThreadStart( () =>
{
    string lala = "rtry";
    int k = 5 + Convert.ToInt32(lala);
}
));
thread.Start();
}
}
catch {}
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
а чё пробывать. ты хоть в исключение оповещение поставь
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Можешь сам протестить:
Код:
try
{
for (byte p = 0; p < 3; p++)
{
Thread thread = new Thread(new ThreadStart( () =>
{
    string lala = "rtry";
    int k = 5 + Convert.ToInt32(lala);
}
));
thread.Start();
}
}
catch {}
И как этот код должен работать ???????
Если вам надо отловить ошибку в потоке, так и трай катч в нем вешайте.
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
И как этот код должен работать ???????
Если вам надо отловить ошибку в потоке, так и трай катч в нем вешайте.
так я об этом и говорю, что внешний try catch не действует на новый созданный в нем поток и нужно внутри создавать ещё try catch
а чё пробывать. ты хоть в исключение оповещение поставь
там дописать-то остается project.SendInfoToLog("error", true);
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
так я об этом и говорю, что внешний try catch не действует на новый созданный в нем поток и нужно внутри создавать ещё try catch

там дописать-то остается project.SendInfoToLog("error", true);
А он и НЕ ДОЛЖЕН на него действовать !!!!!!

Возьмите почитайте книжки по .NET
 

ssXXXss

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

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
А он и НЕ ДОЛЖЕН на него действовать !!!!!!
так все правильно, так и должно быть
у тебя catch нахдотсяся вообще не в теме, он должен находиться внутри где ты поток создаёшь
так я об этом и писал ранее:
Так кубик из себя автоматически представляет уже обертку в try catch, но когда создается новый поток в нем, то try catch на него уже не действует, надо его вручную в другом потоке прописывать.
P.S. просто все сводится к тому, что кубик в зенке представляет из себя обертку в try catch
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
  1. Thread thread = new Thread(new ThreadStart( () =>
  2. {
  3. string lala = "rtry";
  4. int k = 5 + Convert.ToInt32(lala);
  5. }
  6. ));
  7. thread.Start();
чёт не догоняю. вот без всего прямой метод, но он ведь уже вроде не правильный
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
  1. Thread thread = new Thread(new ThreadStart( () =>
  2. {
  3. string lala = "rtry";
  4. int k = 5 + Convert.ToInt32(lala);
  5. }
  6. ));
  7. thread.Start();
чёт не догоняю. вот без всего прямой метод, но он ведь уже вроде не правильный
да, потому что там строка 4 не обернута в try catch, правильный вариант будет такой:

Код:
for (byte p = 0; p < 3; p++)
{
Thread thread = new Thread(new ThreadStart( () =>
{
    string lala = "rtry";
    try
    {
           int k = 5 + Convert.ToInt32(lala);
    }
    catch { project.sendinfotolog("ошибка в потоке", true);}
}
));
thread.Start();
}
 

ssXXXss

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

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
чёт ты какой то трактор изобретаешь вместо велосипеда, только понять не могу что вообще изобретаешь
Так это только демонстрационный пример для того, чтобы показать, что кубик в c# - обернутый в try catch код и за счет этого его скорость работы ниже кода, который не обернут в try catch и благодаря этому проект мейкер не падает от использования кубиков (правда таки полностью это не удастся доказать, но частично показал). В реальности я бы использовал для такого случая либо parallel.for, либо пул потоков (в зависимости от того, какая задача стоит), ну или сами потоки для особо трудоемких и долгих задач.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Так это только демонстрационный пример для того, чтобы показать, что кубик в c# - обернутый в try catch код и за счет этого его скорость работы ниже кода, который не обернут в try catch и благодаря этому проект мейкер не падает от использования кубиков (правда таки полностью это не удастся доказать, но частично показал). В реальности я бы использовал для такого случая либо parallel.for, либо пул потоков (в зависимости от того, какая задача стоит), ну или сами потоки для особо трудоемких и долгих задач.
прекращай об этом. я в 3000 потоков в РМ тестил свой код и он работает на ура и так же в зенке
 
  • Спасибо
Реакции: Adigen

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Так это только демонстрационный пример для того, чтобы показать, что кубик в c# - обернутый в try catch код и за счет этого его скорость работы ниже кода, который не обернут в try catch и благодаря этому проект мейкер не падает от использования кубиков (правда таки полностью это не удастся доказать, но частично показал). В реальности я бы использовал для такого случая либо parallel.for, либо пул потоков (в зависимости от того, какая задача стоит), ну или сами потоки для особо трудоемких и долгих задач.
В зенке все кубики обернуты в try catch, выход по красной ветке это catch и есть.
Скорость работы ВНУТРИ try catch АБСОЛЮТНО такая-же как без него.

У меня стойкое впечатление, что вы вообще не понимаете процессов о которых расуждаете.
 
Последнее редактирование:
  • Спасибо
Реакции: Moadip и ssXXXss

ssXXXss

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

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
прекращай об этом. я в 3000 потоков в РМ тестил свой код и он работает на ура и так же в зенке
скомпилируй код из сообщения №22 в код в консольном приложении в VS и сравни, ну или можешь воспользоваться уже приложенным мною консольным приложением
В зенке все кубики обернуты в try catch, выход по красной ветке это catch и есть.
Скорость работы ВНУТРИ try catch АБСОЛЮТНО такая-же как без него.
У меня стойкое впечатление что вы вообще не понимаете процессов, о которых расуждаете.
внутри try такая же, но когда дело доходит до перехода к самому catch, то скорость замедляется, поэтому писать код в кубиках далеко не самая лучшая идея
 

ssXXXss

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

ssXXXss

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

amyboose

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

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