From e684262ca6c2aba6ca58283e81376de7f98debc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Walter?= Date: Mon, 31 Mar 2014 15:54:52 +0000 Subject: [PATCH] performance issue logging calls are expensive because of the objects created when assembling the log messages. Using the check() method of the logging sub-system can prevent object creation git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1583357 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/ddf/EscherContainerRecord.java | 4 +- .../apache/poi/ddf/EscherMetafileBlip.java | 54 ++++++++------- .../apache/poi/hssf/model/InternalSheet.java | 4 +- .../apache/poi/hslf/model/PPGraphics2D.java | 68 ++++++++++++++----- .../poi/hwpf/model/FIBFieldHandler.java | 8 ++- .../org/apache/poi/hwpf/model/ListTables.java | 4 +- .../poi/hwpf/model/NilPICFAndBinData.java | 9 ++- .../src/org/apache/poi/hwpf/model/PlfLfo.java | 8 ++- .../src/org/apache/poi/hwpf/model/Xstz.java | 6 +- 9 files changed, 108 insertions(+), 57 deletions(-) diff --git a/src/java/org/apache/poi/ddf/EscherContainerRecord.java b/src/java/org/apache/poi/ddf/EscherContainerRecord.java index 860edd8071..8454231cf1 100644 --- a/src/java/org/apache/poi/ddf/EscherContainerRecord.java +++ b/src/java/org/apache/poi/ddf/EscherContainerRecord.java @@ -85,7 +85,9 @@ public final class EscherContainerRecord extends EscherRecord { addChildRecord(child); if (offset >= data.length && bytesRemaining > 0) { _remainingLength = bytesRemaining; - log.log(POILogger.WARN, "Not enough Escher data: " + bytesRemaining + " bytes remaining but no space left"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not enough Escher data: " + bytesRemaining + " bytes remaining but no space left"); + } } } return bytesWritten; diff --git a/src/java/org/apache/poi/ddf/EscherMetafileBlip.java b/src/java/org/apache/poi/ddf/EscherMetafileBlip.java index 428d11e4e9..f1444b9843 100644 --- a/src/java/org/apache/poi/ddf/EscherMetafileBlip.java +++ b/src/java/org/apache/poi/ddf/EscherMetafileBlip.java @@ -254,31 +254,31 @@ public final class EscherMetafileBlip extends EscherBlipRecord { " Filter: " + HexDump.toHex( field_7_fFilter ) + '\n' + " Extra Data:" + '\n' + extraData + (remainingData == null ? null : ("\n" + - " Remaining Data: " + HexDump.toHex(remainingData, 32))); - } - - @Override - public String toXml(String tab) { - String extraData = ""; - StringBuilder builder = new StringBuilder(); - builder.append(tab).append(formatXmlRecordHeader(getClass().getSimpleName(), HexDump.toHex(getRecordId()), HexDump.toHex(getVersion()), HexDump.toHex(getInstance()))) - .append(tab).append("\t").append("0x").append(HexDump.toHex( field_1_UID ) + '\n' + - (field_2_UID == null ? "" : (" UID2: 0x" + HexDump.toHex( field_2_UID ) + '\n'))).append("\n") - .append(tab).append("\t").append("0x").append(HexDump.toHex( field_2_cb )).append("\n") - .append(tab).append("\t").append("").append(getBounds()).append("\n") - .append(tab).append("\t").append("").append(getSizeEMU()).append("\n") - .append(tab).append("\t").append("0x").append(HexDump.toHex( field_5_cbSave )).append("\n") - .append(tab).append("\t").append("0x").append(HexDump.toHex( field_6_fCompression )).append("\n") - .append(tab).append("\t").append("0x").append(HexDump.toHex( field_7_fFilter )).append("\n") - .append(tab).append("\t").append("").append(extraData).append("\n") - .append(tab).append("\t").append("0x").append(HexDump.toHex(remainingData, 32)).append("\n"); - builder.append(tab).append("\n"); - return builder.toString(); - } - - /** - * Return the blip signature - * + " Remaining Data: " + HexDump.toHex(remainingData, 32))); + } + + @Override + public String toXml(String tab) { + String extraData = ""; + StringBuilder builder = new StringBuilder(); + builder.append(tab).append(formatXmlRecordHeader(getClass().getSimpleName(), HexDump.toHex(getRecordId()), HexDump.toHex(getVersion()), HexDump.toHex(getInstance()))) + .append(tab).append("\t").append("0x").append(HexDump.toHex( field_1_UID ) + '\n' + + (field_2_UID == null ? "" : (" UID2: 0x" + HexDump.toHex( field_2_UID ) + '\n'))).append("\n") + .append(tab).append("\t").append("0x").append(HexDump.toHex( field_2_cb )).append("\n") + .append(tab).append("\t").append("").append(getBounds()).append("\n") + .append(tab).append("\t").append("").append(getSizeEMU()).append("\n") + .append(tab).append("\t").append("0x").append(HexDump.toHex( field_5_cbSave )).append("\n") + .append(tab).append("\t").append("0x").append(HexDump.toHex( field_6_fCompression )).append("\n") + .append(tab).append("\t").append("0x").append(HexDump.toHex( field_7_fFilter )).append("\n") + .append(tab).append("\t").append("").append(extraData).append("\n") + .append(tab).append("\t").append("0x").append(HexDump.toHex(remainingData, 32)).append("\n"); + builder.append(tab).append("\n"); + return builder.toString(); + } + + /** + * Return the blip signature + * * @return the blip signature */ public short getSignature() { @@ -287,7 +287,9 @@ public final class EscherMetafileBlip extends EscherBlipRecord { case RECORD_ID_WMF: return HSSFPictureData.MSOBI_WMF; case RECORD_ID_PICT: return HSSFPictureData.MSOBI_PICT; } - log.log(POILogger.WARN, "Unknown metafile: " + getRecordId()); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Unknown metafile: " + getRecordId()); + } return 0; } diff --git a/src/java/org/apache/poi/hssf/model/InternalSheet.java b/src/java/org/apache/poi/hssf/model/InternalSheet.java index ade41fdb59..277fdbd723 100644 --- a/src/java/org/apache/poi/hssf/model/InternalSheet.java +++ b/src/java/org/apache/poi/hssf/model/InternalSheet.java @@ -292,7 +292,9 @@ public final class InternalSheet { // Not clear which application wrote these files. rra = new RowRecordsAggregate(); } else { - log.log(POILogger.WARN, "DIMENSION record not found even though row/cells present"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "DIMENSION record not found even though row/cells present"); + } // Not sure if any tools write files like this, but Excel reads them OK } dimsloc = findFirstRecordLocBySid(WindowTwoRecord.sid); diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/PPGraphics2D.java b/src/scratchpad/src/org/apache/poi/hslf/model/PPGraphics2D.java index 86c67dcebd..99acb335b5 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/PPGraphics2D.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/PPGraphics2D.java @@ -359,7 +359,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * this method clears the current Clip. */ public void clip(Shape s){ - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } } /** @@ -379,7 +381,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @since JDK1.1 */ public Shape getClip(){ - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return null; } @@ -647,7 +651,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { public boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer){ - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return false; } @@ -694,7 +700,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { int width, int height, Color bgcolor, ImageObserver observer){ - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return false; } @@ -751,7 +759,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer){ - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return false; } @@ -813,7 +823,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer){ - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return false; } @@ -851,7 +863,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { */ public boolean drawImage(Image img, int x, int y, ImageObserver observer) { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return false; } @@ -1036,7 +1050,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @since JDK1.1 */ public void setClip(Shape clip) { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } } /** @@ -1334,7 +1350,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @see java.awt.AlphaComposite */ public void setComposite(Composite comp){ - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } } /** @@ -1345,7 +1363,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @see #setComposite */ public Composite getComposite(){ - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return null; } @@ -1486,7 +1506,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @see #setClip */ public void drawString(AttributedCharacterIterator iterator, float x, float y) { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } } /** @@ -1589,7 +1611,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @see #setClip(Shape) */ public boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return false; } @@ -1632,7 +1656,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer) { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } return false; } @@ -1679,7 +1705,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @param c1 the XOR alternation color */ public void setXORMode(Color c1) { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } } /** @@ -1690,7 +1718,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * overwrite the destination with the current color. */ public void setPaintMode() { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } } /** @@ -1725,7 +1755,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @see #drawRenderedImage */ public void drawRenderedImage(RenderedImage img, AffineTransform xform) { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } } /** @@ -1750,7 +1782,9 @@ public final class PPGraphics2D extends Graphics2D implements Cloneable { * @see #setClip */ public void drawRenderableImage(RenderableImage img, AffineTransform xform) { - log.log(POILogger.WARN, "Not implemented"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Not implemented"); + } } protected void applyStroke(SimpleShape shape) { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/FIBFieldHandler.java b/src/scratchpad/src/org/apache/poi/hwpf/model/FIBFieldHandler.java index ff55082afd..68911d1933 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/FIBFieldHandler.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/FIBFieldHandler.java @@ -170,9 +170,11 @@ public final class FIBFieldHandler { if (dsOffset + dsSize > tableStream.length) { - log.log(POILogger.WARN, "Unhandled data structure points to outside the buffer. " + - "offset = " + dsOffset + ", length = " + dsSize + - ", buffer length = " + tableStream.length); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Unhandled data structure points to outside the buffer. " + + "offset = " + dsOffset + ", length = " + dsSize + + ", buffer length = " + tableStream.length); + } } else { diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java b/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java index eaea30733d..cef396efff 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/ListTables.java @@ -143,7 +143,9 @@ public final class ListTables ListLevel lvl = lst.getLevels()[level]; return lvl; } - log.log(POILogger.WARN, "Requested level " + level + " which was greater than the maximum defined (" + lst.numLevels() + ")"); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Requested level " + level + " which was greater than the maximum defined (" + lst.numLevels() + ")"); + } return null; } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/NilPICFAndBinData.java b/src/scratchpad/src/org/apache/poi/hwpf/model/NilPICFAndBinData.java index dd992128ed..58cf567a58 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/NilPICFAndBinData.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/NilPICFAndBinData.java @@ -42,9 +42,12 @@ public class NilPICFAndBinData if ( cbHeader != 0x44 ) { - log.log( POILogger.WARN, "NilPICFAndBinData at offset ", offset, - " cbHeader 0x" + Integer.toHexString( cbHeader ) - + " != 0x44" ); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "NilPICFAndBinData at offset ", offset, + " cbHeader 0x" + Integer.toHexString(cbHeader) + + " != 0x44" + ); + } } // skip the 62 ignored bytes diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/PlfLfo.java b/src/scratchpad/src/org/apache/poi/hwpf/model/PlfLfo.java index 4fd8cc2c35..6e114d8dab 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/PlfLfo.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/PlfLfo.java @@ -106,9 +106,11 @@ public class PlfLfo if ( ( offset - fcPlfLfo ) != lcbPlfLfo ) { - log.log( POILogger.WARN, "Actual size of PlfLfo is " - + ( offset - fcPlfLfo ) + " bytes, but expected " - + lcbPlfLfo ); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "Actual size of PlfLfo is " + + (offset - fcPlfLfo) + " bytes, but expected " + + lcbPlfLfo); + } } } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/Xstz.java b/src/scratchpad/src/org/apache/poi/hwpf/model/Xstz.java index c719f50337..4aef0171fa 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/Xstz.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/Xstz.java @@ -49,8 +49,10 @@ public class Xstz short term = LittleEndian.getShort( data, offset ); if ( term != 0 ) { - log.log( POILogger.WARN, "chTerm at the end of Xstz at offset ", - offset, " is not 0" ); + if (log.check(POILogger.WARN)) { + log.log(POILogger.WARN, "chTerm at the end of Xstz at offset ", + offset, " is not 0"); + } } }