mirror of
https://github.com/MariaDB/server.git
synced 2025-11-20 04:29:40 +01:00
Removing the function my_uca_level_booster_equal_prefix_length().
It was useful only in rare cases, when comparing two equal strings.
Adding a more useful function instead:
my_uca_level_booster_simple_prefix_cmp()
It optimizes well the case when different strings with a simple
prefix are compared.
"Simple" means that prefixes must have the following data:
- The data can be traversed two bytes at a time, i.e.:
* Every two bytes are either two ASCII characters or one 2-byte character
* There are no two-byte characters at an odd octet position
* There are no ASCII contraction heads at an odd octet position
- Each two bytes producing one or two weights
When either of the two prefixes become non-simple, the comparison
switches to the slower loop.
The timing of this query:
SELECT BENCHMARK(1000000000,strcmp('aaaaaaaa','aaaaaaab'));
changed from 11.084 seconds to 8.488 seconds on my desktop.
|
||
|---|---|---|
| .. | ||
| client | ||
| embedded | ||
| examples | ||
| json_lib | ||
| my_decimal | ||
| mysys | ||
| mytap | ||
| sql | ||
| strings | ||
| README.txt | ||
| unit.pl | ||
Unit tests directory structure
------------------------------
This is the current structure of the unit tests. More directories
will be added over time.
mytap Source for the MyTAP library
mysys Tests for mysys components
bitmap-t.c Unit test for MY_BITMAP
base64-t.c Unit test for base64 encoding functions
examples Example unit tests.
core-t.c Example of raising a signal in the middle of the test
THIS TEST WILL STOP ALL FURTHER TESTING!
simple-t.c Example of a standard TAP unit test
skip-t.c Example where some test points are skipped
skip_all-t.c Example of a test where the entire test is skipped
todo-t.c Example where test contain test points that are TODO
no_plan-t.c Example of a test with no plan (avoid this)
Executing unit tests
--------------------
To make and execute all unit tests in the directory:
make test
Observe that the tests in the examples/ directory are just various
examples of tests and are not expected to pass.
Adding unit tests
-----------------
Add a file with a name of the format "foo-t.c" to the appropriate
directory and add the following to the Makefile.am in that directory
(where ... denotes stuff already there):
noinst_PROGRAMS = ... foo-t
Note, it's important to have "-t" at the end of the filename, otherwise the
test won't be executed by 'make test' !
Documentation
-------------
The generated documentation is temporarily placed at:
http://www.kindahl.net/mytap/doc/
I will move it to a better place once I figure out where and how.