0 / 0 / 2
Регистрация: 11.12.2015
Сообщений: 47
|
||||||
1 | ||||||
Оптимизация кода12.10.2016, 14:15. Показов 1631. Ответов 9
Метки нет (Все метки)
Есть кусок кода:
0
|
12.10.2016, 14:15 | |
Ответы с готовыми решениями:
9
Оптимизация кода Оптимизация кода Оптимизация кода Оптимизация кода |
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
|
|
12.10.2016, 14:26 | 2 |
elektro-volk, оно долго работает? Оно потребляет много памяти? Тут есть утечки? Зачем это оптимизировать понадобилось?
0
|
0 / 0 / 2
Регистрация: 11.12.2015
Сообщений: 47
|
|
12.10.2016, 14:27 [ТС] | 3 |
Работаю долгое время на С#, но чую, что в оптимизации я слаб, решил попросить опыта у прокуренных мастеров, можно ли оптимизировать такой кусок кода, может новому научусь
0
|
18 / 23 / 18
Регистрация: 13.05.2016
Сообщений: 227
|
|
12.10.2016, 16:36 | 4 |
Выше написали, смысл искать, что нужно оптимизировать, если все работает нормально и нету утечек
0
|
0 / 0 / 2
Регистрация: 11.12.2015
Сообщений: 47
|
|
13.10.2016, 02:41 [ТС] | 5 |
Программа работает круглосуточно, и надо привести даже мелкие затраты к минимуму
0
|
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
|
|
13.10.2016, 07:16 | 6 |
elektro-volk, судя по одному только этому методу, могу сказать, что твоей программе не оптимизация требуется, а рефакторинг. Причём капитальный:
* почему метода статичный, но явно имеет состояние? Если метод имеет состояние, то это обычный метод обычного класса, а не статика. * почему метод, работающий с удалённой службой (ВК) при этом что-то пишет в консоль? Один метод решает одну задачу. * почему везде строковые литералы, да ещё и повторяющиеся? Вынеси строки и "магические числа" в константы. * что за названия у сущностей? NOCH, chitawlf, EVL, w, one. Ты сам вспомнишь, что это значит через месяц? А мне, как стороннему человеку, это непонятно уже сейчас. Давай осмысленные имена сущностям. Всегда. Ну и по мелочи: * явно присваивать null локальным переменным не нужно - GC довольно умён, чтобы впалить, что переменные тебе не нужны. * зачем ты делаешь так: chitawlf=one , если потом просто передаёшь chitawlf как аргумент? Можно было бы сразу передавать one .Как-то так. Добавлено через 19 минут На последнее (про chitawlf=one ) можешь забить, я тупанул не увидев условие chitawlf!=one
0
|
0 / 0 / 2
Регистрация: 11.12.2015
Сообщений: 47
|
|
13.10.2016, 10:41 [ТС] | 7 |
1) Что значит магические числа
2) Как это понять состояние
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
13.10.2016, 10:49 | 8 |
Числа, которые творят волшебство, неведомое никому, кроме волшебника, например: -42954445. Что это, зачем, что обозначает?
Похоже, что это обработчик срабатывания таймера. Почему оно статическое - не понятно.
0
|
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
|
|
13.10.2016, 11:10 | 9 |
Это значит, что логика метода опирается на вещи, которые ему не были переданы в виде аргументов и которые этот метод может менять во время своей работы (можно сказать, что неявные побочные эффекты). В данном случае это
Program.token , EVL и VkAPI . И если первое - используется просто для чтения, то EVL и VkAPI меняются во время работы данного метода. Последующий вызов EVL.GetString("Noch1"); уже не вернёт тоже самое, что и предыдущий. В данном случае, состояние класса, в котором находится метод NOCH , размазано по эти трём вещам. Рекомендую создать обычный класс, в конструктор которого передать token и ссылки на эти две штуки (EVL и VkAPI). Это изолирует всю эту возню (что бы тут не происходило) в отдельном экземпляре класса. Таких экземпляров, если нужно, можно будет создать произвольное количество. Так можно будет организовать управление несколькими учётными записями/ботами из одного процесса (если тут именно это и происходит). Вообще, использовать статические методы можно только для выноса небольшого утилитарного кода, который по логике вещей, больше никуда не притулить. Это тебе не Си.
0
|
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
|
|
13.10.2016, 11:49 | 10 |
elektro-volk, Замерьте время между вызовами: для поиска наиболее долго выполняемых инструкций нужно искать по методу, меняя начало и конец для замера.
Заранее могу предположить, что все дело в получении данных из ВК, т.к. циклов у вас нет, рекурсии тоже нет. Возможно через прокси медленно работает загрузка данных.
0
|
13.10.2016, 11:49 | |
13.10.2016, 11:49 | |
Помогаю со студенческими работами здесь
10
Оптимизация кода Оптимизация кода Оптимизация кода Оптимизация кода Оптимизация кода Оптимизация кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |