====== 8086 (16-bit) C compiler performance ====== Some notes on standards compliance level: ^ Compiler ^ C standard ^ C++ standard ^ | gcc-ia16 6.3.0 | C11 | C++14 (Tiny/Small memory only) | | OpenWatcom | C90 (limited C99) | limited C++98 | | Digital Mars | C99 | C++98 | ===== Dhrystone v2.1 ===== * Results given in Dhrystones per second. Higher is better. * //286-tuned compile// refers to building with 80286-specific opcodes/tuning, as opposed to the generic option. ^ Compiler ^ Flags ^ DOSBox (3000 cycles) ^ 86Box (80286 @ 8MHz) ^ 86Box (80286 @ 8MHz, 286-tuned compile) ^ | gcc-ia16 6.3.0 (July 2022) | ''-O0'' | 3329.2 | 1910.1 | 1935.6 | | gcc-ia16 6.3.0 (July 2022) | ''-O1'' | 6332.9 | 3273.3 | 3255.0 | | gcc-ia16 6.3.0 (July 2022) | ''-O2'' | 6935.4 | 3640.9 | 3664.3 | | gcc-ia16 6.3.0 (July 2022) | ''-O3'' | 6936.9 | 3641.3 | 3664.3 | | gcc-ia16 6.3.0 (July 2022) | ''-Os'' | 5066.5 | 2697.5 | 2722.5 | | OpenWatcom (Jun 25 2022) | | 4046.0 | 2198.6 | 2240.7 | | OpenWatcom (Jun 25 2022) | ''-oneatx -oh'' | 5496.4 | 3066.3 | 3183.4 | | Digital Mars C 8.57 | | 4221.6 | 2339.2 | 2437.2 | | Digital Mars C 8.57 | ''-o'' | 4481.8 | 2635.9 | 2721.1 | ===== DOS C Compiler Benchmark (dccb) ===== [[https://github.com/leikareipa/dccb|dccb]] is a software 3D rasterizer, designed to test real-world performance across a variety of C DOS compilers. ==== DOSBox, 67000 cycles ==== Test performed by leikareipa. ^ Result (FPS) ^ Compiler ^ | 57 | Microsoft C/C++ 8 | | 41 | Digital Mars C/C++ 8 | | 37 | Open Watcom ? | | 33 | Borland Turbo C 2 | | 32 | Borland C++ 2 | | 32 | Microsoft C 5 | | 31 | Microsoft QuickC 1 | | 30 | HI-TECH Pacific C 7 | | 14 | Mix Power C 2.2 | ===== Code size notes ===== FreeDOS kernel (2022-06-04): * gcc-ia16 6.3.0: 53216 bytes * OpenWatcom: 48757 bytes