Keil Logo

C51 Version 7 Operation Timings
Small Model

The following benchmarks provide a baseline for the execution speed of code generated by the Keil C51 Compiler. Automated test scripts were used to calculate the minimum, average, and maximum time required for each operation.

Each benchmark lists the number of states and the number of seconds required to perform the operation. The state time represents the actual number of instruction cycles. You may specify the oscillator frequency and the clock divisor (for the instruction clock) to obtain execution times in seconds.

Enter MCU Speed Details
(Default XTAL Frequency: 12MHz)
 
XTAL Frequency: MHz
Instruction Clock Divisor:
 

Unsigned Character Operations

Operation Min Avg Max
unsigned char + 3
.50 µSecs
3
.50 µSecs
3
.50 µSecs
unsigned char - 4
.67 µSecs
4
.67 µSecs
4
.67 µSecs
unsigned char * 8
1.33 µSecs
8
1.33 µSecs
8
1.33 µSecs
unsigned char / 8
1.33 µSecs
8
1.33 µSecs
8
1.33 µSecs
unsigned char % 9
1.50 µSecs
9
1.50 µSecs
9
1.50 µSecs
unsigned char >> 11
1.83 µSecs
41
6.83 µSecs
71
11.83 µSecs
unsigned char << 11
1.83 µSecs
41
6.83 µSecs
71
11.83 µSecs

Signed Character Operations

Operation Min Avg Max
signed char + 3
.50 µSecs
3
.50 µSecs
3
.50 µSecs
signed char - 4
.67 µSecs
4
.67 µSecs
4
.67 µSecs
signed char * 8
1.33 µSecs
8
1.33 µSecs
8
1.33 µSecs
signed char / 19
3.17 µSecs
26
4.33 µSecs
31
5.17 µSecs
signed char % 20
3.33 µSecs
27
4.50 µSecs
32
5.33 µSecs
signed char >> 11
1.83 µSecs
41
6.83 µSecs
71
11.83 µSecs
signed char << 11
1.83 µSecs
41
6.83 µSecs
71
11.83 µSecs
cabs () 16
2.67 µSecs
17
2.83 µSecs
18
3.00 µSecs

Unsigned Integer Operations

Operation Min Avg Max
unsigned int + 6
1.00 µSecs
6
1.00 µSecs
6
1.00 µSecs
unsigned int - 7
1.17 µSecs
7
1.17 µSecs
7
1.17 µSecs
unsigned int * 42
7.00 µSecs
42
7.00 µSecs
42
7.00 µSecs
unsigned int / 162
27.00 µSecs
165
27.50 µSecs
192
32.00 µSecs
unsigned int % 162
27.00 µSecs
165
27.50 µSecs
192
32.00 µSecs
unsigned int >> 15
2.50 µSecs
67
11.17 µSecs
120
20.00 µSecs
unsigned int << 15
2.50 µSecs
67
11.17 µSecs
120
20.00 µSecs

Signed Integer Operations

Operation Min Avg Max
signed int + 6
1.00 µSecs
6
1.00 µSecs
6
1.00 µSecs
signed int - 7
1.17 µSecs
7
1.17 µSecs
7
1.17 µSecs
signed int * 42
7.00 µSecs
42
7.00 µSecs
42
7.00 µSecs
signed int / 43
7.17 µSecs
194
32.33 µSecs
229
38.17 µSecs
signed int % 43
7.17 µSecs
194
32.33 µSecs
229
38.17 µSecs
signed int >> 15
2.50 µSecs
67
11.17 µSecs
120
20.00 µSecs
signed int << 15
2.50 µSecs
67
11.17 µSecs
120
20.00 µSecs
abs () 20
3.33 µSecs
22
3.67 µSecs
25
4.17 µSecs

Unsigned Long Operations

Operation Min Avg Max
unsigned long + 12
2.00 µSecs
12
2.00 µSecs
12
2.00 µSecs
unsigned long - 13
2.17 µSecs
13
2.17 µSecs
13
2.17 µSecs
unsigned long * 132
22.00 µSecs
132
22.00 µSecs
132
22.00 µSecs
unsigned long / 253
42.17 µSecs
260
43.33 µSecs
319
53.17 µSecs
unsigned long % 261
43.50 µSecs
268
44.67 µSecs
327
54.50 µSecs
unsigned long >> 27
4.50 µSecs
259
43.17 µSecs
492
82.00 µSecs
unsigned long << 27
4.50 µSecs
259
43.17 µSecs
492
82.00 µSecs

Signed Long Operations

Operation Min Avg Max
signed long + 12
2.00 µSecs
12
2.00 µSecs
12
2.00 µSecs
signed long - 13
2.17 µSecs
13
2.17 µSecs
13
2.17 µSecs
signed long * 132
22.00 µSecs
132
22.00 µSecs
132
22.00 µSecs
signed long / 266
44.33 µSecs
306
51.00 µSecs
618
103.00 µSecs
signed long % 274
45.67 µSecs
314
52.33 µSecs
626
104.33 µSecs
signed long >> 27
4.50 µSecs
259
43.17 µSecs
492
82.00 µSecs
signed long << 27
4.50 µSecs
259
43.17 µSecs
492
82.00 µSecs
labs () 34
5.67 µSecs
45
7.50 µSecs
57
9.50 µSecs

Floating-Point Operations

Operation Min Avg Max
float + 152
25.33 µSecs
199
33.17 µSecs
365
60.83 µSecs
float - 136
22.67 µSecs
201
33.50 µSecs
334
55.67 µSecs
float * 119
19.83 µSecs
219
36.50 µSecs
231
38.50 µSecs
float / 659
109.83 µSecs
895
149.17 µSecs
1,074
179.00 µSecs
fmod () 246
41.00 µSecs
1,963
327.17 µSecs
3,776
629.33 µSecs
modf () 1,510
251.67 µSecs
2,002
333.67 µSecs
2,170
361.67 µSecs
fabs () 28
4.67 µSecs
29
4.83 µSecs
31
5.17 µSecs
ceil () 1,130
188.33 µSecs
1,571
261.83 µSecs
1,781
296.83 µSecs
floor () 1,130
188.33 µSecs
1,571
261.83 µSecs
1,795
299.17 µSecs
pow () 715
119.17 µSecs
3,650
608.33 µSecs
10,301
1,716.83 µSecs
sqrt () 35
5.83 µSecs
1,117
186.17 µSecs
2,352
392.00 µSecs
exp () 246
41.00 µSecs
278
46.33 µSecs
4,479
746.50 µSecs
log () 40
6.67 µSecs
2,006
334.33 µSecs
4,222
703.67 µSecs
log10 () 42
7.00 µSecs
2,106
351.00 µSecs
4,422
737.00 µSecs
sin () 632
105.33 µSecs
3,276
546.00 µSecs
3,715
619.17 µSecs
cos () 599
99.83 µSecs
3,278
546.33 µSecs
3,695
615.83 µSecs
tan () 4,249
708.17 µSecs
4,616
769.33 µSecs
4,796
799.33 µSecs
asin () 346
57.67 µSecs
7,171
1,195.17 µSecs
8,569
1,428.17 µSecs
acos () 814
135.67 µSecs
7,743
1,290.50 µSecs
8,738
1,456.33 µSecs
atan () 1,548
258.00 µSecs
4,310
718.33 µSecs
5,271
878.50 µSecs
atan2 () 1,767
294.50 µSecs
4,991
831.83 µSecs
6,453
1,075.50 µSecs
sinh () 2,802
467.00 µSecs
10,773
1,795.50 µSecs
11,753
1,958.83 µSecs
cosh () 2,848
474.67 µSecs
10,758
1,793.00 µSecs
11,736
1,956.00 µSecs
tanh () 10,239
1,706.50 µSecs
10,894
1,815.67 µSecs
12,768
2,128.00 µSecs

Buffer Operations

Operation Min Avg Max
memset (10) 87
14.50 µSecs
87
14.50 µSecs
87
14.50 µSecs
memset (100) 627
104.50 µSecs
627
104.50 µSecs
627
104.50 µSecs
memset (1000) 6,033
1,005.50 µSecs
6,033
1,005.50 µSecs
6,033
1,005.50 µSecs
memcpy (10) 280
46.67 µSecs
280
46.67 µSecs
280
46.67 µSecs
memcpy (100) 2,260
376.67 µSecs
2,260
376.67 µSecs
2,260
376.67 µSecs
memcpy (1000) 22,066
3,677.67 µSecs
22,066
3,677.67 µSecs
22,066
3,677.67 µSecs
memmove
(10 with overlap)
289
48.17 µSecs
289
48.17 µSecs
289
48.17 µSecs
memmove
(100 with overlap)
2,269
378.17 µSecs
2,269
378.17 µSecs
2,269
378.17 µSecs
memmove
(1000 with overlap)
22,075
3,679.17 µSecs
22,075
3,679.17 µSecs
22,075
3,679.17 µSecs

Memory Allocation Operations

Operation Min Avg Max
malloc (),
99.3% successful
98
16.33 µSecs
478
79.67 µSecs
1,113
185.50 µSecs
free () 141
23.50 µSecs
466
77.67 µSecs
908
151.33 µSecs

Notes Note

  • These tests were performed and measured using the µVision Debugger. Test code was compiled with the C51 Version 7.20 C Compiler using the Small Memory Model, ROM(Large), and Optimization Level 8-SPEED.
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.