Skip to content

unicode-org/icu-perf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

icu-perf

ICU performance test results. Maintained by ICU-TC.

Performance Test Methodology

The performance tests execution and time measurment is a layered process.

  • API invocation iteration: A performance test invocation for an API under tests iterates over the full test data and calls the API once for each test data item. The test data item can be a character, word, line, or the entirety of the test data.
  • Loops: Calibration runs determine how many of the API invocation iterations can be executed within a given time, typically 5 seconds. The resulting number is called loops.
  • Passes: Pre-defined number of performance test tries, typically ten passes. At each pass the API invocation iteration is executed in loops as often as determined by the calibration.

Example: ICU character property APIs such as isAlpha(), etc.

  • Test data: the test data for all ICU character property APIs are all code points from x0 to x10FFFF, i.e. 1,114,112 code points. Each API invocation iteration iterates 1,114,112 times and calls isAlpha() once at each iteration with the respective code point.
  • Loops: For illustration, let's assume that the calibration phase determines that the above 1,114,112 iterations can be repeated 1,600 times within 5 seconds.
  • Passes: Each pass runs 1,600 loops of 1,114,112 iterations and records the execution time of the 1,600 loops. If the number of passes is set to 10, we get 10 performance numbers.
  • Final calculation: The minimum number among the passes is selected and divided by loops*iterations. In this example: "minimum pass"/(1,600 * 1,114,112). The result is the average execution time of one call of isAlpha() from the fastest pass.

Performance Test Charts

The performance tests are all run on Ubuntu and broken out by feature.

  • Charperf Performance tests for character property APIs, cf. the charts. The measured time is for one call of the respective character property API.

  • Utfperf Performance tests for Unicode converters: ucnv_fromUnicode(), ucnv_toUnicode(), ucnv_convertEx(). The measured time is processing time of a codepoint in the input string.

  • Usetperf Performance tests for Uniset APIs add(), contains(), UnicodeSetIterator::get(). Time measured is relative to the size of the USet, which is small (containing U_TITLECASE_LETTER characters) or large (containing U_UNASSIGNED codepoints). Also tests UnicodeSet::applyPattern() for three pre-defined pattern of different complexity.

The following performance tests are additionally broken out by type of test data processed.

Copyright & Licenses

Copyright © 2022-2024 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries.

The project is released under LICENSE.

A CLA is required to contribute to this project - please refer to the CONTRIBUTING.md file (or start a Pull Request) for more information.

About

ICU performance test results. Maintained by ICU-TC

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published