Repository: hadoop Updated Branches: refs/heads/branch-2 60dc848f2 -> 2c69f8cf8
HADOOP-11466. FastByteComparisons: do not use UNSAFE_COMPARER on the SPARC architecture because it is slower there (Suman Somasundar via Colin P. McCabe) (cherry picked from commit ee7d22e90ce67de3e7ee92f309c048a1d4be0bbe) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/2c69f8cf Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/2c69f8cf Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/2c69f8cf Branch: refs/heads/branch-2 Commit: 2c69f8cf81aed731762524e821088fd779210601 Parents: 60dc848 Author: Colin Patrick Mccabe <[email protected]> Authored: Wed Jan 21 16:33:02 2015 -0800 Committer: Colin Patrick Mccabe <[email protected]> Committed: Wed Jan 21 17:06:38 2015 -0800 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 4 ++++ .../apache/hadoop/io/FastByteComparisons.java | 21 +++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/2c69f8cf/hadoop-common-project/hadoop-common/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 91e31e3..e7b96fa 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -378,6 +378,10 @@ Release 2.7.0 - UNRELEASED HADOOP-11327. BloomFilter#not() omits the last bit, resulting in an incorrect filter (Eric Payne via jlowe) + HADOOP-11466. FastByteComparisons: do not use UNSAFE_COMPARER on the SPARC + architecture because it is slower there (Suman Somasundar via Colin P. + McCabe) + Release 2.6.0 - 2014-11-18 INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/2c69f8cf/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java index 3f5881b..a3fea31 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/FastByteComparisons.java @@ -24,6 +24,9 @@ import java.security.PrivilegedAction; import sun.misc.Unsafe; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import com.google.common.primitives.Longs; import com.google.common.primitives.UnsignedBytes; @@ -33,6 +36,7 @@ import com.google.common.primitives.UnsignedBytes; * class to be able to compare arrays that start at non-zero offsets. */ abstract class FastByteComparisons { + static final Log LOG = LogFactory.getLog(FastByteComparisons.class); /** * Lexicographically compare two byte arrays. @@ -71,6 +75,13 @@ abstract class FastByteComparisons { * implementation if unable to do so. */ static Comparer<byte[]> getBestComparer() { + if (System.getProperty("os.arch").equals("sparc")) { + if (LOG.isTraceEnabled()) { + LOG.trace("Lexicographical comparer selected for " + + "byte aligned system architecture"); + } + return lexicographicalComparerJavaImpl(); + } try { Class<?> theClass = Class.forName(UNSAFE_COMPARER_NAME); @@ -78,8 +89,16 @@ abstract class FastByteComparisons { @SuppressWarnings("unchecked") Comparer<byte[]> comparer = (Comparer<byte[]>) theClass.getEnumConstants()[0]; + if (LOG.isTraceEnabled()) { + LOG.trace("Unsafe comparer selected for " + + "byte unaligned system architecture"); + } return comparer; } catch (Throwable t) { // ensure we really catch *everything* + if (LOG.isTraceEnabled()) { + LOG.trace(t.getMessage()); + LOG.trace("Lexicographical comparer selected"); + } return lexicographicalComparerJavaImpl(); } } @@ -234,4 +253,4 @@ abstract class FastByteComparisons { } } } -} \ No newline at end of file +}
