purebasic.info

PureBasic forum
Текущее время: Пт дек 14, 2018 3:43 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Скорость циклов
СообщениеДобавлено: Пн фев 19, 2018 5:54 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2294
Откуда: Russia — Belarus
Благодарил (а): 7 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
sergey2400 писал(а):
Цитата:
Появится сообщение про лимит в 128 символов.
Но после него PB не будет компилировать ни один проект, даже простой Debug "OK" например :).

У меня после компилирует Debug "OK", без перезагрузки, и 5.44, и 5.60, 32 и 64 версии.

Забыл написать. У меня 5.62 x64.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скорость циклов
СообщениеДобавлено: Чт мар 01, 2018 2:05 pm 
Не в сети
док
Аватар пользователя

Зарегистрирован: Вт янв 26, 2016 4:44 pm
Сообщений: 145
Благодарил (а): 50 раз.
Поблагодарили: 19 раз.
Пункты репутации: 0
Здравствуйте.
Вот упрощённый проблемный код:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
EnableExplicit
 
Define.i q=0,w=0, time=0, t1.f=0, t2=0
Define.i a=0,b=0,c=0,d=0,e=0
For q = 1 To 40000000
Next q
time = GetTickCount_()
  For w= 0 To 100000000
    a=1+2
    b=a+2
    c=b+2
    d=c+2
    e=d+2
    Next w
t1 =(GetTickCount_() - time);/1000
MessageRequester("", " Время работы кода в миллисекундах : " + t1)


Проблема та же, необъяснимые тормоза, особенно на AMD, состояние компьютера и ОС не причём...

Ну в общем, не много разобрался, на AMD происходят сильные тормоза (тормозят все вычисления в разы), если в коде есть строка MessageRequester ("", " Время работы кода в миллисекундах : " + t1) и в ней используется переменная с типом float или Double. Повторюсь, при этом притормаживает ВЕСЬ код, а не эта строка.

Если перед этой строкой сделать преобразование в виде t2.i=t1.f и в MessageRequester использовать t2, то торможений не происходит.

Залез в ASM - код:
без торможения:
Код:
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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
; PureBasic 5.46 LTS (Windows - x64) generated code
;
; (c) 2016 Fantaisie Software
;
; The header must remain intact for Re-Assembly
;
; String
; Requester
; FileSystem
; Date
; Object
; SimpleList
; :System
; kernel32.lib
; :Import
;
format MS64 COFF
;
;
extrn PB_FreeFileSystem
extrn PB_FreeObjects
extrn PB_InitRequester
extrn PB_MessageRequester_UNICODE
extrn PB_Str_UNICODE
extrn ExitProcess
extrn GetModuleHandleW
extrn GetTickCount
extrn HeapCreate
extrn HeapDestroy
extrn memset
extrn SYS_CopyString
extrn PB_StringBase
extrn SYS_InitString
extrn SYS_FreeStrings
;
extrn PB_StringBasePosition
public _PB_Instance
public PB_ExecutableType
public PB_OpenGLSubsystem
public _PB_MemoryBase
public PB_Instance
public PB_MemoryBase
public PB_EndFunctions
 
macro pb_public symbol
{
  public  _#symbol
  public symbol
_#symbol:
symbol:
}
 
macro    pb_align value { rb (value-1) - ($-_PB_DataSection + value-1) mod value }
macro pb_bssalign value { rb (value-1) - ($-_PB_BSSSection  + value-1) mod value }
 
public PureBasicStart
;
section '.code' code readable executable align 4096
;
;
PureBasicStart:
;
  SUB    rsp,40
  MOV    r8,I_BSSEnd-I_BSSStart
  XOR    rdx,rdx
  MOV    rcx,I_BSSStart
  CALL  memset
  XOR    rcx,rcx
  CALL  GetModuleHandleW
  MOV    [PB_Instance],rax
  XOR    r8,r8
  MOV    rdx,4096
  XOR    rcx,rcx
  CALL  HeapCreate
  MOV    [PB_MemoryBase],rax
  CALL  SYS_InitString
  CALL  PB_InitRequester
; EnableExplicit
;
; Define.i q=0,w=0, time=0, t1.i=0
  MOV    qword [v_q],0
  MOV    qword [v_w],0
  MOV    qword [v_time],0
  MOV    qword [v_t1],0
; Define.i a=0,b=0,c=0,d=0,e=0
  MOV    qword [v_a],0
  MOV    qword [v_b],0
  MOV    qword [v_c],0
  MOV    qword [v_d],0
  MOV    qword [v_e],0
; For q = 1 To 40000000
  MOV    qword [v_q],1
  JMP   _ForSkipDebug1
_For1:
_ForSkipDebug1:
 MOV    rax,40000000
  CMP    rax,qword [v_q]
  JL    _Next2
; Next q
_NextContinue2:
 INC   qword [v_q]
  JNO   _For1
_Next2:
; time = GetTickCount_()
  CALL  GetTickCount
  MOV    qword [v_time],rax
; For w= 0 To 10000000
  MOV    qword [v_w],0
  JMP   _ForSkipDebug3
_For3:
_ForSkipDebug3:
 MOV    rax,10000000
  CMP    rax,qword [v_w]
  JL    _Next4
; a=1+2
  MOV    qword [v_a],3
; b=a+2
  MOV    r15,qword [v_a]
  ADD    r15,2
  MOV    qword [v_b],r15
; c=b+2
  MOV    r15,qword [v_b]
  ADD    r15,2
  MOV    qword [v_c],r15
; d=c+2
  MOV    r15,qword [v_c]
  ADD    r15,2
  MOV    qword [v_d],r15
; e=d+2
  MOV    r15,qword [v_d]
  ADD    r15,2
  MOV    qword [v_e],r15
; Next w
_NextContinue4:
 INC   qword [v_w]
  JNO   _For3
_Next4:
;
;
; t1 =(GetTickCount_() - time)
  CALL  GetTickCount
  MOV    r15,rax
  SUB    r15,qword [v_time]
  MOV    qword [v_t1],r15
; MessageRequester("", "      : " + t1)
  MOV    rax,[PB_StringBasePosition]
  PUSH   rax
  SUB    rsp,8
  PUSH   rax
  MOV    rcx,_S2
  SUB    rsp,40
  CALL  SYS_CopyString
  ADD    rsp,40
  MOV    rcx,qword [v_t1]
  MOV    rdx,[PB_StringBasePosition]
  PUSH   rdx
  PUSH   rdx
  POP    rdx
  SUB    rsp,32
  CALL  PB_Str_UNICODE
  ADD    rsp,32
  POP    rax
  ADD    qword [PB_StringBasePosition],2
  MOV    rax,_S1
  PUSH   rax
  MOV    rdx,[PB_StringBase]
  ADD    [rsp+8],rdx
  POP    rcx
  POP    rdx
  SUB    rsp,32
  CALL  PB_MessageRequester_UNICODE
  ADD    rsp,40
  POP    qword [PB_StringBasePosition]
_PB_EOP:
 CALL  PB_EndFunctions
  CALL  SYS_FreeStrings
  MOV    rcx,[PB_MemoryBase]
  CALL  HeapDestroy
  MOV    rcx,[PB_ExitCode]
  CALL  ExitProcess
PB_EndFunctions:
 SUB    rsp,40
  CALL  PB_FreeFileSystem
  CALL  PB_FreeObjects
  ADD    rsp,40
  RET
;
;
section '.data' data readable writeable
;
_PB_DataSection:
PB_OpenGLSubsystem: db 0
pb_public PB_DEBUGGER_LineNumber
  dd     -1
pb_public PB_DEBUGGER_IncludedFiles
  dd     0
pb_public PB_DEBUGGER_FileName
  db     0
pb_public PB_Compiler_Unicode
  dd     1
pb_public PB_Compiler_Thread
  dd     0
pb_public PB_Compiler_Purifier
  dd     0
pb_public PB_Compiler_Debugger
  dd     0
PB_ExecutableType: dd 0
pb_align 8
public _SYS_StaticStringStart
_SYS_StaticStringStart:
_S1: dw 0
_S2: dw 32,1042,1088,1077,1084,1103,32,1088,1072,1073,1086,1090,1099,32,1082,1086,1076,1072,32,1074,32,1084,1080,1083,1083,1080,1089,1077,1082,1091,1085,1076,1072,1093,32,58,32,0
pb_public PB_NullString
  dw     0
public _SYS_StaticStringEnd
_SYS_StaticStringEnd:
pb_align 8
pb_align 8
pb_align 8
s_s:
 dq     0
  dq     -1
pb_align 8
;
section '.bss' readable writeable
_PB_BSSSection:
pb_bssalign 8
;
I_BSSStart:
_PB_MemoryBase:
PB_MemoryBase: rq 1
_PB_Instance:
PB_Instance: rq 1
PB_ExitCode: rq 1
;
pb_bssalign 8
PB_DataPointer rq 1
v_a rq 1
v_b rq 1
v_c rq 1
v_d rq 1
v_e rq 1
v_q rq 1
v_w rq 1
v_t1 rq 1
v_time rq 1
pb_bssalign 8
pb_bssalign 8
pb_bssalign 8
pb_bssalign 8
I_BSSEnd:
section '.data' data readable writeable
SYS_EndDataSection:



С торможением:
Код:
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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
; PureBasic 5.46 LTS (Windows - x64) generated code
;
; (c) 2016 Fantaisie Software
;
; The header must remain intact for Re-Assembly
;
; String
; Requester
; FileSystem
; Date
; Object
; SimpleList
; :System
; kernel32.lib
; :Import
;
format MS64 COFF
;
;
extrn PB_FreeFileSystem
extrn PB_FreeObjects
extrn PB_InitRequester
extrn PB_MessageRequester_UNICODE
extrn PB_StrF_UNICODE
extrn ExitProcess
extrn GetModuleHandleW
extrn GetTickCount
extrn HeapCreate
extrn HeapDestroy
extrn memset
extrn SYS_CopyString
extrn PB_StringBase
extrn SYS_InitString
extrn SYS_FreeStrings
;
extrn PB_StringBasePosition
public _PB_Instance
public PB_ExecutableType
public PB_OpenGLSubsystem
public _PB_MemoryBase
public PB_Instance
public PB_MemoryBase
public PB_EndFunctions
 
macro pb_public symbol
{
  public  _#symbol
  public symbol
_#symbol:
symbol:
}
 
macro    pb_align value { rb (value-1) - ($-_PB_DataSection + value-1) mod value }
macro pb_bssalign value { rb (value-1) - ($-_PB_BSSSection  + value-1) mod value }
 
public PureBasicStart
;
section '.code' code readable executable align 4096
;
;
PureBasicStart:
;
  SUB    rsp,40
  MOV    r8,I_BSSEnd-I_BSSStart
  XOR    rdx,rdx
  MOV    rcx,I_BSSStart
  CALL  memset
  XOR    rcx,rcx
  CALL  GetModuleHandleW
  MOV    [PB_Instance],rax
  XOR    r8,r8
  MOV    rdx,4096
  XOR    rcx,rcx
  CALL  HeapCreate
  MOV    [PB_MemoryBase],rax
  CALL  SYS_InitString
  CALL  PB_InitRequester
; EnableExplicit
;
; Define.i q=0,w=0, time=0, t1.f=0
  MOV    qword [v_q],0
  MOV    qword [v_w],0
  MOV    qword [v_time],0
  MOV    dword [v_t1],0
; Define.i a=0,b=0,c=0,d=0,e=0
  MOV    qword [v_a],0
  MOV    qword [v_b],0
  MOV    qword [v_c],0
  MOV    qword [v_d],0
  MOV    qword [v_e],0
; For q = 1 To 40000000
  MOV    qword [v_q],1
  JMP   _ForSkipDebug1
_For1:
_ForSkipDebug1:
 MOV    rax,40000000
  CMP    rax,qword [v_q]
  JL    _Next2
; Next q
_NextContinue2:
 INC   qword [v_q]
  JNO   _For1
_Next2:
; time = GetTickCount_()
  CALL  GetTickCount
  MOV    qword [v_time],rax
; For w= 0 To 10000000
  MOV    qword [v_w],0
  JMP   _ForSkipDebug3
_For3:
_ForSkipDebug3:
 MOV    rax,10000000
  CMP    rax,qword [v_w]
  JL    _Next4
; a=1+2
  MOV    qword [v_a],3
; b=a+2
  MOV    r15,qword [v_a]
  ADD    r15,2
  MOV    qword [v_b],r15
; c=b+2
  MOV    r15,qword [v_b]
  ADD    r15,2
  MOV    qword [v_c],r15
; d=c+2
  MOV    r15,qword [v_c]
  ADD    r15,2
  MOV    qword [v_d],r15
; e=d+2
  MOV    r15,qword [v_d]
  ADD    r15,2
  MOV    qword [v_e],r15
; Next w
_NextContinue4:
 INC   qword [v_w]
  JNO   _For3
_Next4:
;
;
; t1 =(GetTickCount_() - time)
  CALL  GetTickCount
  MOV    qword [rsp-8],rax
  FILD   qword [rsp-8]
  FILD   qword [v_time]
  FSUBP  st1,st0
  FADD   dword [F1]
  FSTP   dword [v_t1]
; MessageRequester("", "      : " + t1)
  MOV    rax,[PB_StringBasePosition]
  PUSH   rax
  SUB    rsp,8
  PUSH   rax
  MOV    rcx,_S2
  SUB    rsp,40
  CALL  SYS_CopyString
  ADD    rsp,40
  MOV    eax,dword [v_t1]
  PUSH   rax
  MOVSS  xmm0,dword [rsp]
  ADD    rsp,8
  MOV    rdx,[PB_StringBasePosition]
  PUSH   rdx
  PUSH   rdx
  POP    rdx
  SUB    rsp,32
  CALL  PB_StrF_UNICODE
  ADD    rsp,32
  POP    rax
  ADD    qword [PB_StringBasePosition],2
  MOV    rax,_S1
  PUSH   rax
  MOV    rdx,[PB_StringBase]
  ADD    [rsp+8],rdx
  POP    rcx
  POP    rdx
  SUB    rsp,32
  CALL  PB_MessageRequester_UNICODE
  ADD    rsp,40
  POP    qword [PB_StringBasePosition]
_PB_EOP:
 CALL  PB_EndFunctions
  CALL  SYS_FreeStrings
  MOV    rcx,[PB_MemoryBase]
  CALL  HeapDestroy
  MOV    rcx,[PB_ExitCode]
  CALL  ExitProcess
PB_EndFunctions:
 SUB    rsp,40
  CALL  PB_FreeFileSystem
  CALL  PB_FreeObjects
  ADD    rsp,40
  RET
;
;
section '.data' data readable writeable
;
_PB_DataSection:
PB_OpenGLSubsystem: db 0
pb_public PB_DEBUGGER_LineNumber
  dd     -1
pb_public PB_DEBUGGER_IncludedFiles
  dd     0
pb_public PB_DEBUGGER_FileName
  db     0
pb_public PB_Compiler_Unicode
  dd     1
pb_public PB_Compiler_Thread
  dd     0
pb_public PB_Compiler_Purifier
  dd     0
pb_public PB_Compiler_Debugger
  dd     0
PB_ExecutableType: dd 0
pb_align 8
public _SYS_StaticStringStart
_SYS_StaticStringStart:
_S1: dw 0
_S2: dw 32,1042,1088,1077,1084,1103,32,1088,1072,1073,1086,1090,1099,32,1082,1086,1076,1072,32,1074,32,1084,1080,1083,1083,1080,1089,1077,1082,1091,1085,1076,1072,1093,32,58,32,0
pb_public PB_NullString
  dw     0
public _SYS_StaticStringEnd
_SYS_StaticStringEnd:
pb_align 8
F1: dd 0
pb_align 8
pb_align 8
s_s:
 dq     0
  dq     -1
pb_align 8
;
section '.bss' readable writeable
_PB_BSSSection:
pb_bssalign 8
;
I_BSSStart:
_PB_MemoryBase:
PB_MemoryBase: rq 1
_PB_Instance:
PB_Instance: rq 1
PB_ExitCode: rq 1
;
pb_bssalign 8
PB_DataPointer rq 1
v_a rq 1
v_b rq 1
v_c rq 1
v_d rq 1
v_e rq 1
v_q rq 1
v_w rq 1
v_time rq 1
v_t1 rd 1
pb_bssalign 8
pb_bssalign 8
pb_bssalign 8
pb_bssalign 8
I_BSSEnd:
section '.data' data readable writeable
SYS_EndDataSection:
 


Я почему-то думаю (чую), что проблема связана с
159 MOVSS xmm0,dword [rsp]
Это единственное значимое изменение, использование sse. Я честно говоря пока ещё не читал, как использование sse влияет на остальной код, знаю поверхностно.
Из описания: movss
Цитата:
movss переводит значение одинарной точности между источником и адресатом. По крайней мере одним из операндов должен быть регистр SSE, вторым может быть либо тоже регистр SSE, либо 32-битное расположение в памяти.

На сколько я догадываюсь, xmm0 - это регистр SSE. В общем не важно...

Хочу попробовать избавится от команды MOVSS xmm0,dword [rsp] или очистить регистр, пусть результат в MessageRequester будет не верным, это не важно, хочу разобраться

В общем, есть ли способ подредактировать asm-файл и скомпилировать в ручную?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Скорость циклов
СообщениеДобавлено: Пн окт 22, 2018 5:59 pm 
Не в сети
профессор

Зарегистрирован: Вс июл 05, 2009 5:55 pm
Сообщений: 340
Благодарил (а): 1 раз.
Поблагодарили: 12 раз.
Пункты репутации: 0
sergey2400

У тебя немного неверно считается время, почемуто общее время работы проги оказывалось меньше чем сумма всех потоков :shock: , это меня немного оздадчило, это как :?: .
Да и впихивать в процедуру адрес и передавать через переменную время...PokeF(*x,GetTickCount_()), както непонятно.
Вот код изменил с правильным подсчетом времени.
Код:
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
 
 tmy= GetTickCount_()
For o = 1 To 40000000
Next o
Dim a.f(15)
 
;  Global q
;  Global w
;  Global e
;  Global r
;  Global t
;  Global y
;  Global u
;  Global i
 
time = GetTickCount_()
; a.f(1) = GetTickCount_()
; a.f(2) = GetTickCount_()
; a.f(3) = GetTickCount_()
; a.f(4) = GetTickCount_()
 
Procedure YourProcedure1(*x)
 
For q = 1 To 100
 For w= 0 To 4999999
 Next w
Next q
PokeF(*x,GetTickCount_())
EndProcedure
 
Procedure YourProcedure2(*x)
 
For e = 1 To 100
 For r= 0 To 4999999
 Next r
Next e
PokeF(*x,GetTickCount_())
EndProcedure
 
Procedure YourProcedure3(*x)
 
For t = 1 To 100
 For y= 0 To 4999999
 Next y
Next t
PokeF(*x,GetTickCount_())
EndProcedure
 
Procedure YourProcedure4(*x)
 
For u = 1 To 100
 For i= 0 To 4999999
 Next i
Next u
PokeF(*x,GetTickCount_())
EndProcedure
 
a(10)=GetTickCount_()
a(1)=GetTickCount_()
thread1= CreateThread(@YourProcedure1(), @a(5))
WaitThread(thread1)
 
a(2)=GetTickCount_()
thread2= CreateThread(@YourProcedure2(), @a(6))
WaitThread(thread2)
 
a(3)=GetTickCount_()
thread3= CreateThread(@YourProcedure3(), @a(7))
WaitThread(thread3)
 
a(4)=GetTickCount_()
thread4= CreateThread(@YourProcedure4(), @a(8))
WaitThread(thread4)
 
 
 
 
 a(1)=a(5)-a(1)
 a(2)=a(6)-a(2)
 a(3)=a(7)-a(3)
 a(4)=a(8)-a(4)
 a(9)=GetTickCount_() - a(10)
  OpenConsole()
 PrintN( " Время работы кода: " + a(1) + "  " + a(2) + "  " + a(3)+ "  "+ a(4) + "  "+ a(9))
PrintN( " общее время работы кода: "+ Str(GetTickCount_()-tmy) );как видим общее время совпадает приблизительно
PrintN( " общее время работы кода(сумма): "+ Str(a(1) + a(2) + a(3)+ a(4) ) )
 
 
 Input()
 
; время где закоментированы глобалки
;  Время работы кода: 1360  1184  1360  1312  5210
;  общее время работы кода: 5359
;  общее время работы кода(сумма): 5216
 
 ;время где розкоментированы глобалки
;  Время работы кода: 1488  1168  1504  1312  5475
;  общее время работы кода: 5578
;  общее время работы кода(сумма): 5472
 



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

Первое число которое выводит твоя прога очень сильно колеблется, вот их список:
904
656
764
2496
760
2580
2496
752
2496
Вопрос почему у них такой разброс 656-2496, остальные неимеет смысл выводить т. к. ты прогу сделал неверно и подсчет кривой получается. Есть вероятность что у тебя проц чемто загружен уже и в разные моменты времени код выполняется с разным временем. Ну можно придумать какойто свой вариант.
и тормоз не подтверждается увеличением глоальных переменных, вот твои даные
904 1572 2432 3088 3087 - нет global
...
752 3232 5728 6444 6444 + q w e r t y u
2496 3416 4304 6692 6691 + q w e r t y u i
Допустим без глобалок 904
почти все глобалки 752
число 2496 встречается и в конце и в средине, ну типа так
2496 3416 4304 5192 5194 + q w e
2580 4976 5896 6820 6818 + q w e r t
2496 4992 5880 6800 6802 + q w e r t y
2496 3416 4304 6692 6691 + q w e r t y u i
Так что выходит, независит.

Как видишь од глобальных независит, почти, хотя может это в винде както объявляется, например какаято функция(я незнаю надо смотреть АСМ), вот результат почти одинаков:
1360 1184 1360 1312 5210
1488 1168 1504 1312 5475

Вопрос остается в том почему он у тебя сильно прыгает по времени, думаю все глобалки в этой строке 2496 3416 4304 6692 6691 + q w e r t y u i будут давать сильный разюрос по времени 700-2496. Возможно както странно выдает время работы проге по приоритетам, комуто нужно больше чем твоей проге вот и твоя прога подвисает на большее время.
ПС: к стати в настройках винды есть такие приколы, у меня стоит завать приоритет прогам, а у системы всегда приорите выше, поэтому работает нормально.

У меня проц целерон 2ГГц.

_________________
искатель истины


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Bing [Bot] и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB