# HG changeset patch # User Martin van Dinther <martin.van.dinther@monetdbsolutions.com> # Date 1568302982 -7200 # Node ID aa654804af6aafaf264c353206ee03f4556a695c # Parent 0b8eb1df827604a175b2e0d1affa0165c9630ca3 Optimised setBytes() method. Eliminated the concatenation of 3 strings: "blob '" + hex.toString() + "'" which can be costly for large byte[] data, which has just been converted into hexString of twice its size. diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java --- a/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java +++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java @@ -1260,14 +1260,16 @@ public class MonetPreparedStatement return; } - final StringBuilder hex = new StringBuilder(x.length * 2); - byte b; - for (int i = 0; i < x.length; i++) { - b = x[i]; - hex.append(HEXES.charAt((b & 0xF0) >> 4)) - .append(HEXES.charAt((b & 0x0F))); + final int len = x.length; + final StringBuilder hex = new StringBuilder(8 + (len * 2)); + hex.append("blob '"); // add a casting prefix + // convert the bytes into hex codes + for (int i = 0; i < len; i++) { + hex.append(HEXES.charAt((x[i] & 0xF0) >> 4)) + .append(HEXES.charAt((x[i] & 0x0F))); } - setValue(parameterIndex, "blob '" + hex.toString() + "'"); + hex.append("'"); // end of hex string value + setValue(parameterIndex, hex.toString()); } /**