Banner showing base of Eiffel tower

Github

Download version 1.4.8: Windows or Linux

Benchmark: Eiffel-Loop Performance Benchmarks

This project has 90 classes.

ECF: benchmark.ecf

Directory: benchmark

. /source

. /source/apps

. /source/comparison

. /source/comparison/l1_uc_string

. /source/comparison/string

. /source/html

. /source/parser

. /source/primes

. /source/string

. /source/string/string_32

. /source/string/zstring

. /source/support

source

APPLICATION_ROOT

Application root

BUILD_INFO

Build specification

Further Information

Click on class link to see notes.

source/apps

BENCHMARK_APP

Command line interface to class EL_BENCHMARK_COMMAND_SHELL which contains a menu of benchmarks for various classes.

Further Information

Click on class link to see notes.

PRIMES_BENCHMARK_APP

Eiffel entry for Software Drag Racing: C++ vs C# vs Python

Further Information

Click on class link to see notes.

STRING_BENCHMARK_APP

Command line interface to class STRING_BENCHMARK_SHELL which contains a menu of benchmarks for various classes.

Further Information

Click on class link to see notes.

ZSTRING_BENCHMARK_APP

Command line interface to create and execute ZSTRING_BENCHMARK_COMMAND

Further Information

Click on class link to see notes.

source/comparison

ARRAYED_INTERVAL_LIST_COMPARISON

Compare arrayed intervals implemented as INTEGER_64 vs INTEGER_32 x 2

Further Information

Click on class link to see notes.

ARRAYED_VS_HASH_SET_SEARCH

Question: at what point does a linear search of an INTEGER_32 array stop being faster than a hash set?

Answer: count > 10

Further Information

Click on class link to see notes.

ARRAYED_VS_LINKED_LIST

Compare filling LINKED_LIST with filling ARRAYED_LIST

Further Information

Click on class link to see notes.

ATTACH_TEST_VS_BOOLEAN_COMPARISON

Compare checking if identifier is attached vs checking if boolean is true

Further Information

Click on class link to see notes.

BIT_POP_COUNT_COMPARISON

Compare methods to caculate population of 1's in NATURAL_64

Further Information

Click on class link to see notes.

BIT_SHIFT_COUNT_COMPARISON

Compare methods to caculated shift count for a bit-mask in descendants of [EL_NUMERIC_BIT_ROUTINES]

Further Information

Click on class link to see notes.

CLASS_ID_ENUM_VS_TYPE_OBJECT

Compare getting dynamic_type for COLLECTION [ANY]} from calls

1. {COLLECTION [ANY]}.type_id
2. Class_id.COLLECTION_ANY

Further Information

Click on class link to see notes.

COMPACTABLE_REFLECTIVE_VS_MANUAL_BIT_MASK

Compare using EL_COMPACTABLE_REFLECTIVE to automate object data compaction to numeric types vs traditional manual method.

Further Information

Click on class link to see notes.

DEVELOPER_COMPARISON

Once off comparisons for developer testing

Further Information

Click on class link to see notes.

DIRECTORY_WALK_VS_FIND_COMMAND

Finding files with extension comparison

Further Information

Click on class link to see notes.

HASH_TABLE_VS_NAMEABLES_LIST_SEARCH

Compare key search speed of HASH_TABLE and EL_NAMEABLES_LIST

Further Information

Click on class link to see notes.

LIST_ITERATION_COMPARISON

Compare 7 ways to iterate over a list

Further Information

Click on class link to see notes.

P_I_TH_LOWER_UPPER_VS_INLINE_CODE

Compare call to {EL_POINTER_ROUTINES}.i_th_lower_upper with using inline code

Further Information

Click on class link to see notes.

REFLECTED_REFERENCE_VS_OPTIMIZED_FIELD_RW

Compare optimized way of field read/write by reflection to the original implementation of EL_REFLECTED_FIELD

Further Information

Click on class link to see notes.

ROUTINE_CALL_ON_ONCE_VS_EXPANDED

Compare call on expanded vs once ref object

Further Information

Click on class link to see notes.

STRING_8_SPLIT_VS_SPLIT_ON_CHARACTER_8

Compare parsing comma separated list of reals using across iteration over:

  1. STRING_8.split
  2. EL_SPLIT_ON_CHARACTER_8 [READABLE_STRING_8]

Further Information

Click on class link to see notes.

SYSTEM_TIME_COMPARISON

Compare EL_SYSTEM_TIME with C_DATE for calculating milliseconds elapsed since mid night.

Further Information

Click on class link to see notes.

TOKENIZED_STEPS_VS_XPATH_STRING

Compare XML processing using tokenized xpaths in class EL_CREATEABLE_FROM_XPATH_MATCH_EVENTS versus using a regular string path in EL_BUILDABLE_FROM_XML.

Further Information

Click on class link to see notes.

source/comparison/l1_uc_string

MAKE_GENERAL_COMPARISON

Compare {L1_UC_STRING}.make_general and {ZSTRING}.make_general

Further Information

Click on class link to see notes.

UNICODE_ITEM_COMPARISON

Compare {L1_UC_STRING}.unicode and {ZSTRING}.unicode

Further Information

Click on class link to see notes.

source/comparison/string

COMPACT_SUBSTRINGS_32_BUFFERING_COMPARISON

Compact substrings buffering comparison

Further Information

Click on class link to see notes.

COMPACT_SUBSTRINGS_32_ITERATION_COMPARISON

Compare EL_COMPACT_SUBSTRINGS_32 iteration methods

Further Information

Click on class link to see notes.

IF_ATTACHED_ITEM_VS_CONFORMING_INSTANCE_TABLE

Compare conditional assignment depending on consecutive elseif attachment attempts to two experimental techniques:

  1. STRING_ITERATION_CURSOR_TABLE uses a hash table lookup of type id
  2. STRING_ITERATION_CURSOR_TYPE_MAP uses a linear array search of type id.

Further Information

Click on class link to see notes.

IMMUTABLE_STRING_SPLIT_COMPARISON

Compare iterating immutable VS changeable string list

Further Information

Click on class link to see notes.

LINE_STATE_MACHINE_COMPARISON

Test variations of class CSV_LINE_PARSER

Further Information

Click on class link to see notes.

REPLACE_SUBSTRING_ALL_VS_GENERAL

Replace substring comparison

Further Information

Click on class link to see notes.

STRING_BENCHMARK_COMPARISON

String benchmark comparison

STRING_CONCATENATION_COMPARISON

Compare various ways of concatenating strings

Further Information

Click on class link to see notes.

STRING_ITEM_8_VS_ITEM

Compare {STRING_8}.item VS character_32_item

Further Information

Click on class link to see notes.

STRING_SPLIT_ITERATION_COMPARISON

String split iteration comparison

Further Information

Click on class link to see notes.

SUBSTRING_INDEX_COMPARISON

Substring index comparison

ZSTRING_APPEND_GENERAL_VS_APPEND

{ZSTRING}.append_general VS {ZSTRING}.append for ZSTRING argument

Further Information

Click on class link to see notes.

ZSTRING_APPEND_Z_CODE_VS_APPEND_CHARACTER

{ZSTRING}.append_z_code VS {ZSTRING}.append_character

Further Information

Click on class link to see notes.

ZSTRING_AREA_ITERATION_COMPARISON

Compare methods of iterating over {ZSTRING}.area

Further Information

Click on class link to see notes.

ZSTRING_DEVELOPER_COMPARISON

Once off comparisons for developer testing

Further Information

Click on class link to see notes.

ZSTRING_INTERVAL_SEARCH_COMPARISON

Compare {ZSTRING}.substring_index_list VS {ZSTRING}.substring_intervals

Further Information

Click on class link to see notes.

ZSTRING_SAME_CHARACTERS_COMPARISON

Once off benchmark to determine best algorithm for {ZSTRING}.same_characters_zstring

Further Information

Click on class link to see notes.

ZSTRING_SPLIT_COMPARISON

ZSTRING split comparison

Further Information

Click on class link to see notes.

ZSTRING_SPLIT_LIST_COMPARISON

Compare {EL_ZSTRING}.split_list with {EL_ZSTRING_LIST}.make_split

Further Information

Click on class link to see notes.

ZSTRING_TOKENIZATION_COMPARISON

Compare original {WORD_TOKEN_TABLE}.paragraph_list_tokens implementation to new one using routine {ZSTRING}.fill_alpha_numeric_intervals

Further Information

Click on class link to see notes.

ZSTRING_UNICODE_TO_Z_CODE

Once off comparisons for developer testing

Further Information

Click on class link to see notes.

source/html

BENCHMARK_HTML

Benchmark html

BENCHMARK_TABLE

Benchmark table

MEMORY_BENCHMARK_TABLE

Memory benchmark table

PERFORMANCE_BENCHMARK_TABLE

Performance benchmark table

ZSTRING_BENCHMARK_COMMAND

Zstring benchmark command

source/parser

CSV_INTEGER_STATE_PARSER

CSV parser for lines encoded as Latin-1

CSV_POINTER_STATE_PARSER

CSV parser for lines encoded as Latin-1

CSV_PROCEDURE_STATE_PARSER

CSV parser using agent states

CSV_STATE_PARSER

CSV parser for lines encoded as Latin-1

FILE_SIZE_SCANNER

Scan Rhythmbox database for total file size

REGULAR_FILE_SIZE_SCANNER

Find sum of all file-size counts in rhythmdb.xml using regular xpath processing

TOKENIZED_FILE_SIZE_SCANNER

Find sum of all file-size counts in rhythmdb.xml using tokenized xpath processing

source/primes

PRIME_NUMBER_COMMAND

Command to calculate primes using the the sieve of Eratosthenes method

PRIME_NUMBER_SIEVE_1

TO_SPECIAL [BOOLEAN] implementation of PRIME_NUMBER_COMMAND

PRIME_NUMBER_SIEVE_2

MANAGED_POINTER implementation of PRIME_NUMBER_COMMAND

PRIME_NUMBER_SIEVE_3

EL_CPP_BOOLEAN_VECTOR implementation of PRIME_NUMBER_COMMAND

PRIME_NUMBER_SIEVE_4

Implementation using bits compacted into an array of type SPECIAL [NATURAL_32]

source/string

BENCHMARK_CONSTANTS

Benchmark constants

MIXED_ENCODING_STRING_BENCHMARK

Benchmark using a mix of Latin and Unicode encoded data

STRING_32_ROUTINES

STRING_32 routines for benchmarking

STRING_BENCHMARK

Benchmark using pure Latin encodable string data

STRING_ITERATION_CURSOR_TABLE

Provides access to shared string iteration cursor for string conforming to READABLE_STRING_GENERAL

STRING_ITERATION_CURSOR_TYPE_MAP

Provides access to shared string iteration cursor for string conforming to READABLE_STRING_GENERAL

STRING_ROUTINES

String routines for benchmarking

TEST_STRINGS

Test strings

ZSTRING_ROUTINES

ZSTRING routines for benchmarking

source/string/string_32

MIXED_ENCODING_STRING_32_BENCHMARK

Benchmark using a mix of Latin and Unicode encoded data

STRING_32_BENCHMARK

Benchmark using pure Latin encodable string data

TEST_STRING_32

Test string 32

source/string/zstring

MIXED_ENCODING_ZSTRING_BENCHMARK

Benchmark using a mix of Latin and Unicode encoded data

TEST_ZSTRING

Test zstring

ZSTRING_BENCHMARK

Benchmark using pure Latin encodable string data

source/support

BENCHMARK_COMMAND_SHELL

Command shell for various kinds of performance comparison benchmarks

COMPACT_SUBSTRINGS_32_C_EXTERNAL

EL_COMPACT_SUBSTRINGS_32_ITERATION that uses inline C for pointer get/set

COMPACT_SUBSTRINGS_32_INDEX

Fast lookup of item in unencoded intervals array by caching area_index

Further Information

Click on class link to see notes.

EXPANDED_ANY

Expanded ANY

NATURAL_32_BIT_ROUTINES_V1

EL_NATURAL_32_BIT_ROUTINES with shift_count calculated using iterative bit-shifts

NATURAL_32_BIT_ROUTINES_V2

EL_NATURAL_32_BIT_ROUTINES that calculates shift_count using a de Bruijn sequence

NATURAL_32_BIT_ROUTINES_V3

EL_NATURAL_32_BIT_ROUTINES that calculates shift_count using branching algorithm described on Stackoverflow article

STRING_BENCHMARK_SHELL

String related benchmark comparisons

STRING_TUPLE_ASSIGN_SORTER

Sort a string conforming to READABLE_STRING_GENERAL into a tuple slot of the appropiate character_bytes

STRING_TYPE_SORTER

Sort a string conforming to READABLE_STRING_GENERAL into a tuple slot of the appropiate character_bytes

Further Information

Click on class link to see notes.

WORD_TOKEN_TABLE

EL_WORD_TOKEN_TABLE using previous implementation of paragraph_list_tokens