gnrunge [Tue, 8 Feb 2022 23:23:21 +0000 (15:23 -0800)]
ICU-21843 Modifies performance tests and test framework in preparation of
adding performance tests to ICU CI.
- test/perf/Makefile.in:
adds strsrchperf to list of subdirs.
changes target 'all' to compile everything in the standard way.
- test/perf/ustrperf/Makefile.in: changes target executable from stringperf to
ustrperf (i.e. name of directory) to allow uniform handling with other
perf tests in GHA CI rules.
- tools/ctestfw/uperf.cpp: changes output to ndjson format for processing with
GHA Benchmark. Keep the previous output, which gets processed by the Perl
scripts, when executed in 'verbose' mode. Backward compatibility,
in case someone still wants to use the Perl scripts for the time being.
May get cleaned up later.
Also remove a few non-essential output lines that would interfer with
GHA Benchmark.
processing
Andy Heninger [Sun, 19 Dec 2021 19:51:21 +0000 (11:51 -0800)]
ICU-21763 UVector cleanup, remove old funcs.
Remove the functions UVector::addElementX() and UVector::ensureCapacityX() that
were temporarily added to aid in the cleaning up of UVector's out-of-memory
error handling.
allenwtsu [Mon, 10 Jan 2022 14:07:13 +0000 (22:07 +0800)]
ICU-21699 Fix CjkBreakEngine performance issue
1. vector.contains() uses sequential comparison, O(n).
As the vector size is great, the performance will be impacted.
Remove this unnecessary check, vector.contains(), in C++.
2. At Java's CjkBreakEngine, replace "vector.contains()" with "if(pos > previous)" to deal with duplicate breakpoint position.
This way, C++ and Java implementation will be synchronous.
Test: ant checkTest -Dtestclass='com.ibm.icu.dev.test.rbbi.RBBITest'
(RBBTest#TestBreakAllChars() can generate duplicate position for word break. It could pass with this change)
Andy Heninger [Sat, 20 Nov 2021 00:33:58 +0000 (16:33 -0800)]
ICU-21763 UVector cleanup in Formatting Code
Revise uses of UVector in Formatting related code to better handle memory
allocation failures. This is one of an ongoing series of commits to address
similar problems with UVector usage throughout ICU.
The changes primarily involve switching uses of UVector::addElementX() to the
new adoptElement() or addElement() functions, as appropriate, and using
LocalPointers for tracking memory ownership.
Andy Heninger [Fri, 12 Nov 2021 00:12:44 +0000 (16:12 -0800)]
ICU-21763 UVector cleanup, continued.
Revise uses of UVector in the next batch of files to better handle memory
allocation failures. This is one of an ongoing series of commits to address
similar problems with UVector usage throughout ICU.
The changes primarily involve switching uses of UVector::addElementX() to the
new adoptElement() or addElement() functions, as appropriate, and using
LocalPointers for tracking memory ownership.
Andy Heninger [Tue, 9 Nov 2021 20:53:59 +0000 (12:53 -0800)]
ICU-21763 UVector cleanup in Locale & Region Code
Revise uses of UVector in Locale and Region related code to better handle
memory allocation failures. This is one of an ongoing series of commits to
address similar problems with UVector usage throughout ICU.
The changes involve switching uses of UVector::addElementX() to the new
adoptElement() or addElement() functions, as appropriate, and using
LocalPointers for tracking memory ownership.
In Region::loadRegionData(), improved the overall error detection and recovery.
Andy Heninger [Sat, 30 Oct 2021 00:17:41 +0000 (17:17 -0700)]
ICU-21778 UnicodeString::clone error handling fix
Change UnicodeString::clone() to return a nullptr if the underlying copy
constructor produces a bogus string. This can happen if the copy constructor
encounters a memory allocation failure in allocating the copy's internal string
buffer, or if the string being copied was already bogus.
The change is consistent with other ICU clone functions, which are generally
defined to return nullptr in case of errors.
Andy Heninger [Sat, 2 Oct 2021 05:20:18 +0000 (22:20 -0700)]
ICU-21763 UVector cleanup in vtzone.cpp
Revise uses of UVector in vtzone.cpp to better handle memory allocation
failures. This is one of an ongoing series of commits to address similar
problems with UVector usage throughout ICU.
The changes primarily involve switching uses of UVector::addElementX() to the
new adoptElement() or addElement() functions, as appropriate, and using
LocalPointers for tracking memory ownership.
Andy Heninger [Mon, 11 Oct 2021 18:02:42 +0000 (11:02 -0700)]
ICU-21763 UVector cleanup in time zone code
Revise uses of UVector in time zone related code to better handle memory
allocation failures. This is one of an ongoing series of commits to address
similar problems with UVector usage throughout ICU.
The changes involve switching uses of UVector::addElementX() to the new
adoptElement() or addElement() functions, as appropriate, and using
LocalPointers for tracking memory ownership.
ICU-21649 Adds build and execution of Unicode update tools to GHA CI.
Checks that the build process completes without failure and that the
generated data is identical with the data currently in the repository.
ICU-21581 Creates a new workflow to be activated upon merge into main or
maintenance branches only and adds GHA CI automation of BRS task 'Test ICU4J
with only little-endian ICU4C data', cf.:
https://unicode-org.github.io/icu/processes/release/tasks/integration.html#test-icu4j-with-only-little-endian-icu4c-data.
ICU-21581 Adds copyright notice and comment to new GHA script.
Update ICU (main branch and upcoming version 70) halfway to 2021b.
- with Samoa & Jordan rule updates
- with corrected pre-1993 transitions in Malawi (?), Portugal, etc.
- without for now (due to release timing) renaming Pacific/Enderbury to Pacific/Kanton
- without merging many zones whose timestamps agree since 1970
Erik Torres [Wed, 22 Sep 2021 22:51:08 +0000 (22:51 +0000)]
ICU-21581 BRSRC 70.1 Version update and regenerate configure for v70.1
In this PR, I am updating the version number from 70.0.1 for the BRS task.
Previously, we had frontloaded part of this, so the diff in this PR are not as numerous.
It has also been decided that we should differentiate frontloaded tasks and RC tasks by having the version numbers being:
Frontload version number: XX.X.X (70.0.1 -> Major.minor.patch)
RC/GA version number: XX.X (70.1 -> Major.minor)
I've added some documentation for this, for future releases :)