The size of the object code of the various T3X/0 back ends is illustrated in the following table by the examples of a simple Hello World program as well as the compiler executable itself. The "Hello World" program, of course, mostly measures the size of the run time library.
Target |
Word Size |
Hello World Size (Bytes) |
Compiler Size (Bytes) |
|
---|---|---|---|---|
TCVM | 16-bit | 134 | 20715 | byte code |
CP/M-Z80 | 16-bit | 1905 | 35153 | |
DOS-8086 | 16-bit | 1215 | 29273 | |
FreeBSD-386 | 32-bit | 1316 | 38804 | statically linked |
Unix-3861 | 32-bit | 7596 | 41676 | dynamically linked |
Unix-6861 | 64-bit | 9272 | 55248 | dynamically linked |
The compiler executables are those of T3X/0 version 43.
The following table summarizes the time the compiler requires to self-compile on various systems. It is interesting that T3X/0 compiles slightly more lines per MHz on the Z80 than on the 8088. I would have guessed that the 8088 is much faster, because it has built-in multiplication and division and is 16-bit internally.
The superior speed of the 4MHz Z80 compared to the other Z80 CPUs might be due to the file system on an SRAM card.
I have no idea why the TCVM is so slow on the ARMv7.
A modern CPU and architecture (x86-64) delivers more than an order of magnitude more thruput per clock speed compared to the Z80 or 8088.
Target | CPU Speed | File System | Time | Rel. | Lines/Min. | Lines/MHz |
---|---|---|---|---|---|---|
CP/M Z80 | 4.00 MHz | SRAM card | 9m20.00s | 1.00 | 254 | 64 |
DOS 8088 | 4.77 MHz | CF card | 8m55.00s | 1.05 | 273 | 57 |
DOS V20 | 4.77 MHz | CF card | 8m31.00s | 1.10 | 281 | 59 |
CP/M Z80 | 7.40 MHz | CF card | 5m37.00s | 1.67 | 434 | 59 |
CP/M eZ80 | 18.40 MHz | SD card | 51.00s | 11.00 | 2,464 | 134 |
TCVM on ARMv7 | 900.00 MHz | SD card | 5.23s | 107.00 | 23,900 | 27 |
FreeBSD ARMv7 | 900.00 MHz | SD card | 0.63s | 892.00 | 199,000 | 221 |
TCVM on x86-64 | 1000.00 MHz | SSD | 0.85s | 661.00 | 164,000 | 164 |
FreeBSD x86-64 | 1000.00 MHz | SSD | 0.15s | 3747.00 | 933,000 | 933 |
ARMv7 running T3X/0 version 20a, eZ80 running version 36, all others version 12.