gnrunge [Wed, 9 Mar 2022 16:39:43 +0000 (08:39 -0800)]
ICU-21900 Adjusts performance alert threshold to 150%, i.e. the alert only is
triggered if the current measured execution time is 50% higher than the previous
time.
The current setting of 100% means that even a 1% increase from previous time
triggers the alert already.
gnrunge [Wed, 23 Feb 2022 19:40:21 +0000 (11:40 -0800)]
ICU-21900 Bookkeeping of CLDR tickets in TODO() comments: CLDR-14502 was closed
as duplicate of 14582 (open) and CLDR-13700 was closed as duplicate of
CLDR-13701 (open). Modify the TODOs accordingly.
Andy Heninger [Thu, 24 Feb 2022 00:48:24 +0000 (16:48 -0800)]
ICU-21592 Linebreak loose cj rules cleanup
This is a followup to PR #1991, Update cj normal/loose linebreak per CSS
The original change to the line_loose_cj rules involved splitting hyphens out
of the BA (Break After) class, allowing a break when they follow an ID. This
change simplifies the the rules for doing that.
It also fixes a problem with the original change that had altered the behavior
of BAX hyphens that followed Regional Indicators or Unattached Combining Marks.
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.