Difference between revisions of "Stm8 code size"

From SDCC wiki
Jump to: navigation, search
m
 
(16 intermediate revisions by one user not shown)
Line 1: Line 1:
 +
Note: There is [http://www.colecovision.eu/stm8/compilers.shtml another comparison of compilers targeting the STM8], that uses standard benchmarks and also considers other aspects, such as standard compliance and code speed.
 +
 
A history of code size in sdcc and a comparison to other compilers.
 
A history of code size in sdcc and a comparison to other compilers.
 +
 +
Note: these benchmarks are not representative. The files were originally chosen as examples of source for which SDCC generates particularly bad code compared to other compilers (that was quite a while ago, before SDCC even had a stm8 backend); the purpose of the table is mostly to see the progress of SDCC.
  
 
== STM8 code size comparison (bytes): ==
 
== STM8 code size comparison (bytes): ==
 +
 
{| border=1 class="simple"
 
{| border=1 class="simple"
 
! File  
 
! File  
! Cosmic C²
+
! Cosmic
! sdcc-stm8 #8537
+
! IAR
! sdcc-stm8 #8586
+
! sdcc 3.4.0³
! sdcc-stm8 #8702
+
! sdcc 3.6.0³
 +
! sdcc 3.6.9 #10107³
 
|-  
 
|-  
 
|  cvu_vinb.c  
 
|  cvu_vinb.c  
7
+
'''6'''
15
+
'''6'''
 +
|  10
 +
|  10
 +
|  10
 +
|-
 +
|  galois_lfsr.c
 
|  15
 
|  15
 
|  15
 
|  15
|-
+
'''12'''
|  galois_lfsr.c
+
'''12'''
|  21
+
'''12'''
34
+
32
+
34
+
 
|-  
 
|-  
 
|  get_tile.c  
 
|  get_tile.c  
95
+
89
129
+
87
120
+
'''82'''
113
+
'''82'''
 +
|  '''82'''
 
|-  
 
|-  
 
|  huffman_iterative.c  
 
|  huffman_iterative.c  
161
+
'''134'''
323
+
171
288
+
162
224
+
138
 +
|  142
 
|-  
 
|-  
 
|  huffman_recursive.c  
 
|  huffman_recursive.c  
198
+
'''140'''
358
+
168
306
+
174
265
+
178
 +
|  171
 
|-  
 
|-  
 
|  init_loop.c  
 
|  init_loop.c  
33
+
'''24'''
69
+
31
54
+
27
48
+
27
 +
|  27
 
|-  
 
|-  
 
|  insertion_sort.c  
 
|  insertion_sort.c  
108
+
'''92'''
247
+
111
191
+
137
191
+
126
 +
|  122
 
|-  
 
|-  
 
|  memcpy_compression.c  
 
|  memcpy_compression.c  
31
+
'''43'''
93
+
54
77
+
56
72
+
57
 +
|  57
 
|-  
 
|-  
 
|  memtovmemcpy.c  
 
|  memtovmemcpy.c  
30
+
'''44'''
101
+
55
86
+
51
86
+
50
 +
|  50
 
|-  
 
|-  
 
|  play_music.c  
 
|  play_music.c  
393
+
354
721
+
'''290'''
669
+
352
552
+
347
 +
|  328
 
|-  
 
|-  
 
|  sdcc_mullong.c  
 
|  sdcc_mullong.c  
132
+
'''127'''
673
+
179
494
+
352
381
+
298
 +
|  287
 
|-  
 
|-  
 
|  set_screen_mode.c  
 
|  set_screen_mode.c  
|  49  
+
|  49
75
+
49
80
+
61
63
+
'''47'''
 +
|  '''47'''
 
|-  
 
|-  
 
|  set_sprite_x.c  
 
|  set_sprite_x.c  
66
+
'''55'''
152
+
65
128
+
57
117
+
63
 +
|  58
 
|-  
 
|-  
 
|  z88dk-mktime.c  
 
|  z88dk-mktime.c  
239
+
221
618
+
'''209'''
603
+
347
528
+
335
 +
|  317
 
|-  
 
|-  
 
|  total  
 
|  total  
1563
+
'''1393'''
3609
+
1490
3142
+
1880
2689
+
1770
 +
|  1710
 
|}
 
|}
  
Line 103: Line 124:
 
The benchmark files can be found at http://colecovision.eu/stuff/testbench.tar.gz
 
The benchmark files can be found at http://colecovision.eu/stuff/testbench.tar.gz
  
² C Compiler for STM8 (COSMIC Software); Generator V4.3.4 - 23 Mar 2010
+
All compilers have been configured for strong optimization for code size.
 +
 
 +
¹ C Compiler for STM8 (COSMIC Software); Generator V4.3.7; Optimizer V4.3.6. Current version as of mid-2013.
 +
 
 +
² IAR C/C++ Compiler V1.40.1.50106 for STM8. Current version as of mid-2013.
  
 +
³ Compiler options --opt-code-size --max-allocs-per-node 10000000
  
 
This is a list of feature requests, that combined will probably get code size down near to the level of the non-free compilers.
 
This is a list of feature requests, that combined will probably get code size down near to the level of the non-free compilers.

Latest revision as of 11:09, 25 October 2017

Note: There is another comparison of compilers targeting the STM8, that uses standard benchmarks and also considers other aspects, such as standard compliance and code speed.

A history of code size in sdcc and a comparison to other compilers.

Note: these benchmarks are not representative. The files were originally chosen as examples of source for which SDCC generates particularly bad code compared to other compilers (that was quite a while ago, before SDCC even had a stm8 backend); the purpose of the table is mostly to see the progress of SDCC.

[edit] STM8 code size comparison (bytes):

File Cosmic C¹ IAR C² sdcc 3.4.0³ sdcc 3.6.0³ sdcc 3.6.9 #10107³
cvu_vinb.c 6 6 10 10 10
galois_lfsr.c 15 15 12 12 12
get_tile.c 89 87 82 82 82
huffman_iterative.c 134 171 162 138 142
huffman_recursive.c 140 168 174 178 171
init_loop.c 24 31 27 27 27
insertion_sort.c 92 111 137 126 122
memcpy_compression.c 43 54 56 57 57
memtovmemcpy.c 44 55 51 50 50
play_music.c 354 290 352 347 328
sdcc_mullong.c 127 179 352 298 287
set_screen_mode.c 49 49 61 47 47
set_sprite_x.c 55 65 57 63 58
z88dk-mktime.c 221 209 347 335 317
total 1393 1490 1880 1770 1710


The benchmark files can be found at http://colecovision.eu/stuff/testbench.tar.gz

All compilers have been configured for strong optimization for code size.

¹ C Compiler for STM8 (COSMIC Software); Generator V4.3.7; Optimizer V4.3.6. Current version as of mid-2013.

² IAR C/C++ Compiler V1.40.1.50106 for STM8. Current version as of mid-2013.

³ Compiler options --opt-code-size --max-allocs-per-node 10000000

This is a list of feature requests, that combined will probably get code size down near to the level of the non-free compilers.

Request ID Summary
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox