How we do them and measure the results?
Whetstone: Large Model
Whetstone: Small Model
Sieve: Large Model
Sieve: Small Model
Towers of Hanoi: Large Model
Towers of Hanoi: Small Model
Dhrystone: Large Model
Long Operations: Small Model
Program: | WHETS.C | |
Memory Model: | LARGE | |
Pragmas: | NoAuto, NoGeneric, NoExtStk | |
Version: | 6.10.35 | |
Against: | Keil V5.02a | |
Test date: | February 2, 1997 | |
Tested by: | HC | |
Notes: |
Measurement | Optimize for SPEED |
Optimize for SIZE |
Comments: | ||||
---|---|---|---|---|---|---|---|
FSI | Keil | FSI | Keil | Note: Franklin's superior code size in spite of the use of fully reentrant libraries. | |||
Code Size - Total | 7644 | 10091 | 7394 | 9100 | |||
Code Size - Module | 3534 | 5283 | 3219 | 4234 | |||
Data Size - Static | 8 | 34 | 8 | 34 | |||
Data Size - Dynamic | 37 | 36 | 37 | 36 | |||
Data Size - Total | 45 | 70 | 45 | 70 | |||
XDATA Size - Static | 110 | 185 | 110 | 185 | |||
XDATA Size - Dynamic | 0 | 0 | 0 | 0 | |||
XDATA Size - Total | 110 | 185 | 110 | 185 | |||
Execution - In KIPS @12MHz | 21 | 23 | 20 | 22 |
Program: | WHETS.C | |
Memory Model: | SMALL | |
Pragmas: | NoGeneric, NoExtStk | |
Version: | 6.10.35 | |
Against: | Keil V5.02a | |
Test date: | Feb. 12, 1997 | |
Tested by: | HC | |
Notes: | Impossible with Keil v5.02. Easily done with Franklin v6.1 in AUTO mode because local variables are dynamic. |
Measurement | Optimize for SPEED |
Optimize for SIZE |
Comment: | ||||
---|---|---|---|---|---|---|---|
FSI | Keil | FSI | Keil | Note: Franklin's code size in spite of the use of fully reentrant libraries. | |||
Code Size - Total | 7064 | impossible | 6775 | impossible | |||
Code Size - Module | 3073 | impossible | 2721 | impossible | |||
Data Size - Static | 114 | impossible | 118 | impossible | |||
Data Size - Dynamic | 35 | impossible | 35 | impossible | |||
Data Size - Total | 149 | impossible | 153 | impossible | |||
XDATA Size - Static | 0 | impossible | 0 | impossible | |||
XDATA Size - Dynamic | 0 | impossible | 0 | impossible | |||
XDATA Size - Total | 0 | impossible | 0 | impossible | |||
Execution - In KIPS @12MHz | 25 | impossible | 23 | impossible |
Program: | SIEVE.C | |
Memory Model: | LARGE | |
Pragmas: | NoAuto, NoGeneric, NoExtStk | |
Version: | 6.10.35 | |
Against: | Keil V5.02a | |
Test date: | Feb. 9, 1997 | |
Tested by: | FL | |
Notes: | This benchmark exercises loop management and the use of local registers. |
Measurement | Optimize for SPEED |
Optimize for SIZE |
Comments: | ||||
---|---|---|---|---|---|---|---|
FSI | Keil | FSI | Keil | Increased FSI DATA size due to fully reentrant printf() routine. | |||
Code Size - Total | 1006 | 1322 | 1030 | 1322 | |||
Code Size - Module | 185 | 201 | 177 | 201 | |||
Data Size - Static | 8 | 34 | 8 | 34 | |||
Data Size - Dynamic | 28 | 6 | 28 | 6 | |||
Data Size - Total | 36 | 40 | 36 | 40 | |||
XDATA Size - Static | 8197 | 8237 | 8197 | 8237 | |||
XDATA Size - Dynamic | 0 | 0 | 0 | 0 | |||
XDATA Size - Total | 8197 | 8237 | 8197 | 8237 | |||
Execution - In seconds @12MHz | 7.061 | 7.835 | 7.383 | 7.835 |
Program: | SIEVE.C | |
Memory Model: | SMALL | |
Pragmas: | NoAuto, NoGeneric, NoExtStk | |
Version: | 6.10.35 | |
Against: | Keil V5.02a | |
Test date: | Feb. 2, 1997 | |
Tested by: | FL | |
Notes: | This benchmark exercises loop management and the use of local registers. |
Measurement | Optimize for SPEED |
Optimize for SIZE |
Comments: | ||||
---|---|---|---|---|---|---|---|
FSI | Keil | FSI | Keil | Increased FSI DATA size due to fully reentrant printf() routine. | |||
Code Size - Total | 973 | 1240 | 973 | 1240 | |||
Code Size - Module | 152 | 166 | 152 | 166 | |||
Data Size - Static | 14 | 34 | 14 | 34 | |||
Data Size - Dynamic | 28 | 6 | 28 | 6 | |||
Data Size - Total | 42 | 40 | 42 | 40 | |||
XDATA Size - Static | 8191 | 8191 | 8191 | 8191 | |||
XDATA Size - Dynamic | 0 | 0 | 0 | 0 | |||
XDATA Size - Total | 8191 | 8191 | 8191 | 8191 | |||
Execution - In seconds @12MHz | 5.800 | 6.001 | 5.800 | 6.001 |
Program: | SIEVE.C | |
Memory Model: | LARGE | |
Pragmas: | NoAuto, NoGeneric, ExtStk | |
Version: | 6.10.01 | |
Against: | Keil V5.02a | |
Test date: | October 9, 1996 | |
Tested by: | HC | |
Notes: | This particular example demonstrates the speed of fast external stacks
when their use is necessary for fully reentrant capability. |
Measurement | Optimize for SPEED |
Optimize for SIZE |
Comments: | ||||
---|---|---|---|---|---|---|---|
FSI | Keil | FSI | Keil | XDATA size does NOT include the external stack | |||
Code Size - Total | 1118 | 2227 | 1118 | 2228 | |||
Code Size - Module | 913 | 1058 | 913 | 1037 | |||
Data Size - Static | 9 | 34 | 9 | 34 | |||
Data Size - Dynamic | 13 | 10 | 13 | 12 | |||
Data Size - Total | 22 | 44 | 22 | 46 | |||
XDATA Size - Static | 43 | 81 | 43 | 81 | |||
XDATA Size - Dynamic | 32 | 32 | 32 | 32 | |||
XDATA Size - Total | 75 | 113 | 75 | 113 | |||
Execution - In ms @12MHz | 9.816 | 15.572 | 9.816 | 16.660 |
Program: | TOWERS.C | |
Memory Model: | SMALL | |
Pragmas: | NoAuto, NoGeneric, NoExtStk | |
Version: | 6.10.03 | |
Against: | Keil V5.02a | |
Test date: | October 19, 1996 | |
Tested by: | FL | |
Notes: | SIZE=4, NOPRINT |
Measurement | Optimize for SPEED |
Optimize for SIZE |
Comments: | ||||
---|---|---|---|---|---|---|---|
FSI | Keil | FSI | Keil | The advantage afforded by a "switchable" printf function. | |||
Code Size - Total | 829 | 1709 | 829 | 1790 | |||
Code Size - Module | 643 | 691 | 643 | 691 | |||
Data Size - Static | 49 | 78 | 49 | 78 | |||
Data Size - Dynamic | 42 | 42 | 42 | 42 | |||
Data Size - Total | 91 | 120 | 91 | 120 | |||
XDATA Size - Static | 0 | 0 | 0 | 0 | |||
XDATA Size - Dynamic | 0 | 0 | 0 | 0 | |||
XDATA Size - Total | 0 | 0 | 0 | 0 | |||
Execution - In ms @12MHz | 5.139 | 5.542 | 5.139 | 5.542 |
Program: | DHRY.C | |
Memory Model: | LARGE | |
Pragmas: | NoAuto, NoGeneric, NoExtStk | |
Version: | 6.10.35 | |
Against: | Keil V5.02a | |
Test date: | Feb. 12, 1997 | |
Tested by: | HC | |
Notes: | In this case the size of the "SPEED" optimized code is
atypically smaller that "SIZE" optimized code due to the inclusion of single access library code. |
Measurement | Optimize for SPEED |
Optimize for SIZE |
Comments: | ||||
---|---|---|---|---|---|---|---|
FSI | Keil | FSI | Keil | The advantage afforded by a "switchable" printf function. | |||
Code Size - Total | 5204 | 5594 | 5259 | 5369 | |||
Code Size - Module | 2166 | 2296 | 2106 | 2020 | |||
Data Size - Static | 8 | 34 | 8 | 34 | |||
Data Size - Dynamic | 48 | 23 | 48 | 20 | |||
Data Size - Total | 56 | 57 | 56 | 54 | |||
XDATA Size - Static | 5494 | 5537 | 5494 | 5537 | |||
XDATA Size - Dynamic | n/a | n/a | n/a | n/a | |||
XDATA Size - Total | 5494 | 5537 | 5494 | 5537 | |||
Execution - In seconds @12MHz | 0.9746 | 1.0261 | 0.9957 | 1.07764 |
Program: | LONG_OP.C | |
Memory Model: | SMALL | |
Pragmas: | NoAuto, Generic | |
Version: | 6.10.36 | |
Against: | Keil V5.02a | |
Test date: | Feb. 14, 1997 | |
Tested by: | FL | |
Notes: | A general execution of long integer math operations. The test function
performs several long integer math operations with 10 different values. For instance: a very common occurrence, converting an integer value into a string. This example illustrates that small size is not the only criteria for effective operational speed! |
Measurement | Optimize for SPEED |
Optimize for SIZE |
Comments: | ||||
---|---|---|---|---|---|---|---|
FSI | Keil | FSI | Keil | The advantage afforded by a "switchable" printf function. | |||
Code Size - Total | 1656 | 1803 | 1721 | 1803 | |||
Code Size - Module | 269 | 287 | 247 | 287 | |||
Data Size - Static | 64 | 103 | 64 | 103 | |||
Data Size - Dynamic | 33 | 4 | 33 | 4 | |||
Data Size - Total | 97 | 107 | 97 | 107 | |||
XDATA Size - Static | 0 | 0 | 0 | 0 | |||
XDATA Size - Dynamic | 0 | 0 | 0 | 0 | |||
XDATA Size - Total | 0 | 0 | 0 | 0 | |||
Execution - In m/seconds @12MHz | 38.66 | 109.85 | 49.27 | 109.85 |