// Test Config String strX = 'value'; Integer itr = 100000; /** * METHOD 01 Simple String Concat * Heap Size 24, CPU Time 5803 (100k iterations) */ // Add values to the simpleConcatString string Integer heapStart = limits.getHeapSize(); Integer cpuStart = limits.getCpuTime(); basicConcatMethod(''); Integer cpuEnd = limits.getCpuTime(); Integer heapEnd = limits.getHeapSize(); /** * METHOD 02 XML StreamWriter Concat Method Cheat * Heap Size 24, CPU Time 721 (100k iterations) */ Integer heapCheatStart = limits.getHeapSize(); Integer cpuCheatStart = limits.getCpuTime(); xmlCheatMethod(new XmlStreamWriter()); Integer cpuCheatEnd = limits.getCpuTime(); Integer heapCheatEnd = limits.getHeapSize(); // Let's run it again with an example usage and also validate the results are the same Assert.areEqual( basicConcatMethod(''), xmlCheatMethod(new XmlStreamWriter()) ); // Add the debugs at the end as we have a huge debug log with 100k iterations System.debug(''); System.debug('HEAP string concat: ' + (heapEnd - heapStart )); System.debug('CPUT string concat: ' + (cpuEnd - cpuStart )); System.debug(''); System.debug('HEAP XML Cheat: ' + (heapCheatEnd - heapCheatStart )); System.debug('CPUT XML Cheat: ' + (cpuCheatEnd - cpuCheatStart )); System.debug(''); /** * Put your concatenation logic in here */ static String basicConcatMethod(String input){ for(Integer i =0; i<itr; i++){ input+=strX; } return input; } /** * or here */ static String xmlCheatMethod(XmlStreamWriter xsw){ for(Integer i =0; i<itr; i++){ xsw.writeCharacters(strX); } return xsw.getXmlString(); }