Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
1

Что влияет на скорость запуска и работы программы

15.01.2012, 04:52. Показов 2142. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте ув. програмисты!
Есть вопрос (хотя скорее проблема) упала скорость запуска и выполнения программы, причём резко в несколько раз. С чем это может быть связанно? Количество переменных влияет на скорость работы?
Скрипт недоделаный кликер. Я понимаю для вас он навернр ужасен,но Кто может подскажите (помогите).
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        [DllImport("User32.dll")]
        static extern void mouse_event(MouseFlags dwFlags, int dx, int dy, int dwData, UIntPtr dwExtraInfo);
 
        [Flags]
        enum MouseFlags
        {
            Move = 0x0001, LeftDown = 0x0002, LeftUp = 0x0004, RightDown = 0x0008,
            RightUp = 0x0010, Absolute = 0x8000
        };
        private void button1_Click(object sender, EventArgs e)
        {   
            repid:
            int clear = 777;
            int x1 = 210, x5 = 210;
            int y1 = 687, y2 = 687, y3 = 687, y4 = 687;
            int x2 = x1 + 20, x6 = x1 + 20;
            int x3 = x2 + 20, x7 = x2 + 20;
            int x4 = x3 + 20, x8 = x3 + 20;
            int y5 = 713, y6 = 713, y7 = 713, y8 = 713;
                        
            Clipboard.SetDataObject(Convert.ToString(clear));// задаёт буферу значение 777
 
            Thread.Sleep(100);
            Cursor.Position = new Point(89, 61);
            mouse_event(MouseFlags.LeftDown, 89, 61, 0, UIntPtr.Zero);
            mouse_event(MouseFlags.LeftUp, 89, 61, 0, UIntPtr.Zero); //нажимет обновить
 
            Cursor.Position = new Point(1078, 777);
            mouse_event(MouseFlags.LeftDown, 1078, 777, 0, UIntPtr.Zero);
            mouse_event(MouseFlags.LeftUp, 1078, 777, 0, UIntPtr.Zero);
            Thread.Sleep(100);
            SendKeys.SendWait("%{Enter}");
            Thread.Sleep(100);
            Cursor.Position = new Point(41, 675);
            mouse_event(MouseFlags.LeftDown, 52, 677, 0, UIntPtr.Zero);
            Thread.Sleep(400);
            Cursor.Position = new Point(177, 725);
            mouse_event(MouseFlags.LeftUp, 185, 723, 0, UIntPtr.Zero);
            Thread.Sleep(9000);  // сканирует и переводит файн ридером
 
            IDataObject iData = Clipboard.GetDataObject();
            string str = (String)iData.GetData(DataFormats.Text);
            int chek = Convert.ToInt32(str);
            int res = 0;
            if (chek != 777)
            { if (str.Length > 2)
                { string begin = str.Substring(0, 1);
                    string midl = str.Substring(1, 1);
                    string end = str.Substring(2, 1);
                    int a = int.Parse(begin);
                    int b = int.Parse(end);
                    int Num;
                    bool numA = int.TryParse(a.ToString(), out Num);//если а число
                    if (numA)
                    { bool numB = int.TryParse(b.ToString(), out Num);// если б число
                        if (numB)
                        { if (midl == "-")
                            { res = a - b;
                            } 
                        else if (midl == "+")
                            { res = a + b;
                            }
                        }
                    }
                }
            } 
            else if (chek == 777)
                { Random rnd = new Random();
                    res = rnd.Next(1, 8);
                    //выбирает любой ответ наугад т.к файн ридер ничего не распознал и нажимет обновить
                 Thread.Sleep(2000);
                    Cursor.Position = new Point(89, 61);
                    Thread.Sleep(20);
                    mouse_event(MouseFlags.LeftDown, 89, 61, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, 89, 61, 0, UIntPtr.Zero);
                    //нажимет обновить
                    Thread.Sleep(10000);
                    goto repid;
                }
                if (res == 1)
                { Cursor.Position = new Point(x1, y1);
                    mouse_event(MouseFlags.LeftDown, x1, y1, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x1, y1, 0, UIntPtr.Zero);
                }
               else if (res == 2)
                { Cursor.Position = new Point(x2, y2);
                    mouse_event(MouseFlags.LeftDown, x2, y2, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x2, y2, 0, UIntPtr.Zero);
                }
 
                else if (res == 3)
                { Cursor.Position = new Point(x3, y3);
                    mouse_event(MouseFlags.LeftDown, x3, y3, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x3, y3, 0, UIntPtr.Zero);
                }
 
                else if (res == 4)
                { Cursor.Position = new Point(x4, y4);
                    mouse_event(MouseFlags.LeftDown, x4, y4, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x4, y4, 0, UIntPtr.Zero);
                }
 
                else if (res == 5)
                { Cursor.Position = new Point(x5, y5);
                    mouse_event(MouseFlags.LeftDown, x5, y5, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x5, y5, 0, UIntPtr.Zero);
                } 
                else if (res == 6)
                { Cursor.Position = new Point(x6, y6);
                    mouse_event(MouseFlags.LeftDown, x6, y6, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x6, y6, 0, UIntPtr.Zero);
                }
                else if (res == 7)
                {  Cursor.Position = new Point(x7, y7);
                    mouse_event(MouseFlags.LeftDown, x7, y7, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x7, y7, 0, UIntPtr.Zero);
                } 
                else if (res == 8)
                { Cursor.Position = new Point(x8, y8);
                    mouse_event(MouseFlags.LeftDown, x8, y8, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x8, y8, 0, UIntPtr.Zero);
                }
                else if (res == 0)
                { Random rnd = new Random();
                    res = rnd.Next(1, 8);
                    //выбирает любой ответ наугад т.к файн ридер ничего не распознал и нажимет обновить
                  
                  Thread.Sleep(2000);
                    Cursor.Position = new Point(89, 61);
                    Thread.Sleep(20);
                    mouse_event(MouseFlags.LeftDown, 89, 61, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, 89, 61, 0, UIntPtr.Zero);
                    //нажимет обновить
                    Thread.Sleep(15000);
                    goto repid;
                }
                Thread.Sleep(2000);
                Cursor.Position = new Point(405, 33);
                mouse_event(MouseFlags.LeftDown, 405, 33, 0, UIntPtr.Zero);
                mouse_event(MouseFlags.LeftUp, 405, 33, 0, UIntPtr.Zero);
                //закрывает второе окно в Опере
                Thread.Sleep(2000);
                Cursor.Position = new Point(89, 61);
                Thread.Sleep(20);
                mouse_event(MouseFlags.LeftDown, 89, 61, 0, UIntPtr.Zero);
                mouse_event(MouseFlags.LeftUp, 89, 61, 0, UIntPtr.Zero);
                Thread.Sleep(10000);
                //нажимет обновить
                goto repid;
     }
   }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.01.2012, 04:52
Ответы с готовыми решениями:

Что влияет на скорость работы программы
Добрый день! Столкнулась с проблемой: медленно работает программа! Задача: посчитать интеграл в...

Как двоичный код влияет на скорость работы программы?
Если Python не создаёт машинный двоичный код некоторые программы на языке Python могут работать...

Влияет ли коммутаор на скорость работы 1С
допестим коммутатор 2-го уровни и просто неупровляемый коммутатор?! БД 1С файловая

Влияет ли DNS на скорость работы сайта
Всем привет. Регистратор домена и хостер разные. DNS на выбор. Какие лучше указать? Имеет ли это...

5
Заблокирован
15.01.2012, 06:22 2
Цитата Сообщение от St.as Посмотреть сообщение
Есть вопрос (хотя скорее проблема) упала скорость запуска и выполнения программы, причём резко в несколько раз.
В код особо не вчитывался.
Откажитесь от Thread.Sleep(...); и goto.
Или слипы сделайте по 50 и Application.DoEvents();
0
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
15.01.2012, 18:19  [ТС] 3
Хм. не помогло, но всёравно спасибо.
0
Заблокирован
15.01.2012, 19:46 4
Цитата Сообщение от St.as Посмотреть сообщение
Количество переменных влияет на скорость работы?
Практически нет, в крайнем случае можно GC.Collect(); сделать.
Цитата Сообщение от St.as Посмотреть сообщение
упала скорость запуска и выполнения программы
До этого нормально было?

mouse_event мне еще не нравиться, но возможно так нужно.

И если уж пишите так часто Thread.Sleep, то лучше в отдельный поток положить код.
0
0 / 0 / 0
Регистрация: 14.01.2012
Сообщений: 6
15.01.2012, 20:42  [ТС] 5
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
И если уж пишите так часто Thread.Sleep, то лучше в отдельный поток положить код.
Извините но я не совсем понимаю, положить в отдельный поток. Что это даст и если можно пример в коде.

Добавлено через 2 минуты
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
mouse_event мне еще не нравиться, но возможно так нужно.
Просто я не нашол другой альтернативы для эмуляции нажатий клавиш.

Добавлено через 5 минут
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
До этого нормально было?
Ну посто я в начяле делал отдельные функции программы (мат операции с данными из буфера обмена, нажатие клавиш, рендом...) а потом стал всё совмещать. По окончянии скорость запуска кода составила 10 - 20 сек, при чём всё тормозило так что си шарп не отвечала , про работы вообще молчю. По отдельности всё работало как швеёцарские часы
0
1 / 1 / 1
Регистрация: 15.01.2012
Сообщений: 12
15.01.2012, 22:37 6
Замените If и else if на case
C#
1
2
3
4
5
6
7
8
9
10
if (res == 1)
                { Cursor.Position = new Point(x1, y1);
                    mouse_event(MouseFlags.LeftDown, x1, y1, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x1, y1, 0, UIntPtr.Zero);
                }
               else if (res == 2)
                { Cursor.Position = new Point(x2, y2);
                    mouse_event(MouseFlags.LeftDown, x2, y2, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x2, y2, 0, UIntPtr.Zero);
                }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
switch(res)
{
case 1://res == 1
{ Cursor.Position = new Point(x1, y1);
                    mouse_event(MouseFlags.LeftDown, x1, y1, 0, UIntPtr.Zero);
                    mouse_event(MouseFlags.LeftUp, x1, y1, 0, UIntPtr.Zero);
}
case 2:
{
 
}
default://Если не удолетворяет никаким значениям из имеющихся 
{
 
}
 
}
1
15.01.2012, 22:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2012, 22:37
Помогаю со студенческими работами здесь

Самомодифицирующийся код программы влияет на скорость программы?
Самомодифицирующийся код программы влияет на скорость программы? Если да, то как и почему?

Как влияет расположение раздела на жестком диске на скорость работы?
Здравствуйте! У меня сейчас разделы разбиты следующим образом: Будет ли Linux работать...

Влияет ли наличие фигурных скобок в if-else-if на скорость программы?
Я знаю, что можно сократить конструкцию if-else-if, не указывая границы их тел, если используется...

Что влияет на скорость выполнения запроса?
Используется: Комп: - 2,6Ггц - 6,0 Гб ОЗУ - Win 7x64 Программы: -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru