r403 - in misctestproject/trunk: . src/main src/main/java/org/nuiton/test
Author: fdesbois Date: 2010-04-07 17:58:23 +0200 (Wed, 07 Apr 2010) New Revision: 403 Log: - Add ConcatAlgo to test different algorithms for string concatenation -> add the best algo in join method in StringUtil in nuiton-utils - Add StringArray to test some different ways to use String... in argument Added: misctestproject/trunk/src/main/java/org/nuiton/test/ConcatAlgo.java misctestproject/trunk/src/main/java/org/nuiton/test/StringArray.java misctestproject/trunk/src/main/resources/ Modified: misctestproject/trunk/pom.xml Modified: misctestproject/trunk/pom.xml =================================================================== --- misctestproject/trunk/pom.xml 2010-03-15 11:48:25 UTC (rev 402) +++ misctestproject/trunk/pom.xml 2010-04-07 15:58:23 UTC (rev 403) @@ -66,7 +66,7 @@ <dependency> <groupId>org.nuiton</groupId> <artifactId>nuiton-utils</artifactId> - <version>1.1.0</version> + <version>1.2.2-SNAPSHOT</version> </dependency> <dependency> Added: misctestproject/trunk/src/main/java/org/nuiton/test/ConcatAlgo.java =================================================================== --- misctestproject/trunk/src/main/java/org/nuiton/test/ConcatAlgo.java (rev 0) +++ misctestproject/trunk/src/main/java/org/nuiton/test/ConcatAlgo.java 2010-04-07 15:58:23 UTC (rev 403) @@ -0,0 +1,188 @@ + +package org.nuiton.test; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import org.apache.commons.lang.StringUtils; +import org.nuiton.util.StringUtil; + +/** + * + * @author fdesbois + */ +public class ConcatAlgo { + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + + final long NB_ELMTS = 1000; + final long ELMT_SIZE = 100; + final long NB_EXECUTIONS = 1000; + final long ALGO4_TRESHOLD = 1000; + + List<String> list = new ArrayList<String>(); + long i; + for (i = 0; i < NB_ELMTS; i++) { + StringBuffer buffer = new StringBuffer(); + for (int k = 0; k < ELMT_SIZE; k++) { + buffer.append("e"); + } + list.add(buffer.toString()); + } + + long tic1, tic2; + String result; + long time1 = 0, time2 = 0, time3 = 0, time4 = 0, time5 = 0, time6 = 0, + time7 = 0; + + for (long j = 0; j < NB_EXECUTIONS; j++) { + + tic1 = System.currentTimeMillis(); + result = algo1(list); + tic2 = System.currentTimeMillis(); + time1 += (tic2 - tic1); + + tic1 = System.currentTimeMillis(); + result = algo2(list); + tic2 = System.currentTimeMillis(); + time2 += (tic2 - tic1); + + tic1 = System.currentTimeMillis(); + result = algo3(list); + tic2 = System.currentTimeMillis(); + time3 += (tic2 - tic1); + + if (i < ALGO4_TRESHOLD) { + tic1 = System.currentTimeMillis(); + result = algo4(list); + tic2 = System.currentTimeMillis(); + time4 += (tic2 - tic1); + } + + tic1 = System.currentTimeMillis(); + result = algo5(list); + tic2 = System.currentTimeMillis(); + time5 += (tic2 - tic1); + + tic1 = System.currentTimeMillis(); + result = algo6(list); + tic2 = System.currentTimeMillis(); + time6 += (tic2 - tic1); + + tic1 = System.currentTimeMillis(); + result = algo6(list); + tic2 = System.currentTimeMillis(); + time7 += (tic2 - tic1); + } + + System.out.println("Nb elements = " + NB_ELMTS); + System.out.println("Element size = " + ELMT_SIZE); + System.out.println("Nb executions = " + NB_EXECUTIONS); + System.out.println("Algo1 average time = " + (time1 / NB_EXECUTIONS) + + " _ cumul = " + time1); + System.out.println("Algo2 average time = " + (time2 / NB_EXECUTIONS) + + " _ cumul = " + time2); + System.out.println("Algo3 average time = " + (time3 / NB_EXECUTIONS) + + " _ cumul = " + time3); + if (i < ALGO4_TRESHOLD) { + System.out.println("Algo4 average time = " + + (time4 / NB_EXECUTIONS) + " _ cumul = " + time4); + } + System.out.println("Algo5 average time = " + (time5 / NB_EXECUTIONS) + + " _ cumul = " + time5); + System.out.println("Algo6 average time = " + (time6 / NB_EXECUTIONS) + + " _ cumul = " + time6); + System.out.println("Algo7 average time = " + (time7 / NB_EXECUTIONS) + + " _ cumul = " + time7); + } + + // buffer + iterator (if inside the for) + public static String algo1(List<String> list) { + // 10 rows + StringBuffer buffer = new StringBuffer(); + for (Iterator<String> j = list.iterator(); j.hasNext();) { + String elmt = j.next(); + buffer.append(elmt); + if (j.hasNext()) { + buffer.append(", "); + } + } + String result = buffer.toString(); + buffer = null; + return result; + } + + // buffer + foreach + substring + public static String algo2(List<String> list) { + // 10 rows + if (list.isEmpty()) { + return ""; + } + StringBuffer buffer = new StringBuffer(); + String separator = ", "; + for (String elmt : list) { + buffer.append(separator).append(elmt); + } + String result = buffer.substring(separator.length()); + buffer = null; + return result; + } + + // buffer + foreach + change separator param + public static String algo3(List<String> list) { + // 8 rows + StringBuffer buffer = new StringBuffer(); + String separator = ""; + for (String elmt : list) { + buffer.append(separator).append(elmt); + separator = ", "; + } + String result = buffer.toString(); + buffer = null; + return result; + } + + // no buffer + foreach + change separator param + public static String algo4(List<String> list) { + // 7 rows + String result = ""; + String separator = ""; + for (String elmt : list) { + result += separator + elmt; + separator = ", "; + } + return result; + } + + // using stringUtils join + public static String algo5(List<String> list) { + // 2 rows + String result = StringUtils.join(list, ", "); + return result; + } + + // algo3 with stringBuilder + public static String algo6(List<String> list) { + // 8 rows + StringBuilder builder = new StringBuilder(); + String separator = ""; + for (String elmt : list) { + builder.append(separator).append(elmt); + separator = ", "; + } + String result = builder.toString(); + builder = null; + return result; + } + + // algo6 using in StringUtil (nuiton-utils) + public static String algo7(List<String> list) { + // 2 rows + String result = StringUtil.join(list, ", ", false); + return result; + } + +} Property changes on: misctestproject/trunk/src/main/java/org/nuiton/test/ConcatAlgo.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Added: misctestproject/trunk/src/main/java/org/nuiton/test/StringArray.java =================================================================== --- misctestproject/trunk/src/main/java/org/nuiton/test/StringArray.java (rev 0) +++ misctestproject/trunk/src/main/java/org/nuiton/test/StringArray.java 2010-04-07 15:58:23 UTC (rev 403) @@ -0,0 +1,60 @@ + +package org.nuiton.test; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * + * @author fdesbois + */ +public class StringArray { + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + System.out.println("StringArray"); + test2("Troulala", "Tartanpion", "Potiron"); + test2("Troulala"); + test3(new Object[]{ "Troubidou", "Wahou!"}); + test3(new Object[]{ "Troubidou", "Wahou!"}, "Fouac"); + Object[] params = new Object[2]; + params[0] = "Troubidou"; + params[1] = "Wahou!"; + test3(params); + List<Object> plop = new ArrayList<Object>(); + test3(plop.toArray()); + + plop.add("Troubidou"); + test3(plop.toArray()); + } + + public static void test(String... param) { + String str = Arrays.toString(param); + System.out.println("toString : " + str.substring(1, str.length()-1)); + } + + public static void test2(String... param) { + StringBuilder result = new StringBuilder(); + for (String value : param) { + result.append(", ").append(value); + } + String str = ""; + if (result.length() > 0) { + str = result.substring(2); + } + System.out.println("toString : " + str); + } + + public static void test3(Object... param) { + Object[] array = param; + System.out.println("toString : " + Arrays.toString(array)); + for (Object o : param) { + System.out.println("elmt : " + o); + } + System.out.println("nbElmts : " + array.length); + } + +} Property changes on: misctestproject/trunk/src/main/java/org/nuiton/test/StringArray.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL"
participants (1)
-
fdesbois@users.nuiton.org